《Unity3D高级编程 主程手记》第三章 数据表(三) 多语言的实现

server/2024/9/23 7:20:26/

        一般文字放在Excel表里一般都会以Key-Value形式存放,就比如,Key为”RoleName”,Value为”角色名字”,或者Key为1101,Value为”好友分享”等。

        这种Key-Value形式,一般会以Int-String形式存在,或者string-string形式存在。

整数形式

string content = GetTextString(12)

        缺点:看起来不是很美观;维护性太差,校验检查难度太大,效率太低。

字符串形式 

string content = GetTextString(“FightWin”)

        缺点: 可能需要用很长的字符串去获取另一个很长的内容,内存占用增加,GC垃圾回收的消耗也会同时增加。

        解决:生成一个类,用变量的形式去记录文字的ID,在文字表生成数据表,同时生成数据定义类,使用变量去代表数字。

Class TextKey
{BattleSceneFightAllianceWin = 1;BattleSceneFightAllianceLose = 2;
}
string content = GetTextString(TextKey.BattleSceneFightAllianceWin)

 多语言部分怎么处理?

简单的处理方式

        就是做多个表,每个表一个语言。

        问题:每次增加删除都要一一对应,否则一个语言没有改就会报错,调试起来非常麻烦。

合并数据表

        把一个表里的一个Key对应多个语言的文字内容写在一个表里面。

键值  中文  英文  日文   韩文
Win   赢了  Win  勝った 이기다

        策划设计人员和运营人员只要关心文字语言表里内容和键值是否正确就可以了,其他都可以完全交给程序员处理了。 

关于分散读取,和集中读取,以及预读取部分

        集中读取,游戏在加载数据表就需要一次集中使用CPU去处理,导致游戏有时会卡顿现象,不合理。我们需要让游戏表现的尽可能的顺畅。

        分散读取比较可取,各个表数据都自己管自己读取吧,这样就CPU就分散开来了,不会一下子对CPU的需求量很大。而且在读取数据表时,要按需读取,而不是一开始就初始化,这样的话跟集中在一起就没有区别了。

        预读取,其实和提前集中读取没有区别,关键是如何利用空挡时间进行预读取。比如在Loading等待时读取一部分数据,这样在等待时也不会浪费CPU。


http://www.ppmy.cn/server/59919.html

相关文章

LeetCode67(二进制求和[位运算,大数运算])

二进制求和 题目要求: 给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。 这道题其实有几种解法.我们先来介绍简单的方法. 我们可以将两个字符串的二进制转成十进制,获取对应值相加之后,我们可以不断对2取余,获取尾数拼接即可.也就是像我们平常求一…

Redis笔记--手写版

Redis是一种key-value对的非关系型数据库、基于内存的数据库,是单线程的,省掉上下文切换的过程,速度最快,因此常用来作为缓存。 重点需要理解Redis的持久化、主从复制、分布集群、哨兵、缓存穿透、缓存击穿、缓存雪崩等概念

【学习css1】flex布局-页面footer部分保持在网页底部

中间内容高度不够屏幕高度撑不开的页面时候&#xff0c;页面footer部分都能保持在网页页脚&#xff08;最底部&#xff09;的方法 1、首先上图看显示效果 2、奉上源码 2.1、html部分 <body><header>头部</header><main>主区域</main><foot…

【RAG检索增强生成】有道QAnything深度解析与实践

目录 引言1、QAnything简介2、技术解析2.1 RAG技术核心2.2 QAnything架构2.3 模型与算法 3、应用场景3.1 企业知识管理3.2 教育与学术研究3.3 客户服务 4、部署实践4.1 环境准备4.2 安装QAnything4.3 启动运行4.4 访问UI界面4.4 API使用4.4.1 新建知识库&#xff08;POST&#…

TLP152 光耦合器:工程师的可靠选择

东芝的 TLP152 光耦合器是一款稳健且多功能的组件&#xff0c;能够满足各种高速和高可靠性应用中的工程师需求。本文将深入探讨 TLP152 的技术特性、优点和应用&#xff0c;突出其在市场中的独特性。 主要特点和规格 TLP152 光耦合器集成了一颗铝镓砷&#xff08;GaAlAs&…

NC398 腐烂的苹果

题目来源&#xff1a;牛客 题目描述&#xff1a; 给定一个 &#x1d45b;&#x1d45a; nm 的网格&#xff0c;其中每个单元格中可能有三种值中的一个 0 , 1 , 2。 其中 0 表示这个格子为空、1 表示这个格子有一个完好的苹果&#xff0c;2 表示这个格子有一个腐烂的苹果。 腐…

java实现图片转pdf

参考文档:java代码实现快速创建一个1000页的pdf文档-CSDN博客

SpringBoot的动态代理默认用的哪个???

在 Spring Boot 中&#xff0c;动态代理的默认实现方式取决于被代理的对象的类型和具体配置&#xff1a; JDK 动态代理&#xff1a; 当代理的对象实现了一个或多个接口时&#xff0c;Spring 默认使用 JDK 动态代理。JDK 动态代理只能代理实现了接口的类。 CGLIB 动态代理&…