多语言设计思路
2022-08-11 15:50:52 0 举报
AI智能生成
多语言思考
作者其他创作
大纲/内容
多语言
1. Apk在检查互斥资源时,不保留全地区互斥资源
新加入的资源可以对应被热更,不额外热更已有的资源
2. 生成后的AB包,记录对应的标记,再次生成不会改变原有的位置
3. 根据主包和子包的形式放置,对应一个or多个AB包
......
目标设计
1. Apk保留全地区被互斥的资源
2. 根据配置的信息生成 AB 包
3. 当前资源结构,还未区分主包子包的情况
实际设计
检查规则
sPath:相对路径
全地区先判断多语言地区加载,没有再判断全地区加载
多语言加载一次
nType:资源类型,多语言地区和全地区
配置代码动态加载资源的数据块
外部统一接口:tResPath.XXXX
根据加载内容区分为:通用配置、多语言配置和系统模块配置
ResPath
支持检查文件路径类型,进而决定是否加载1-2次资源
ResLoader
代码设计
1. 设置标记,记录当前资源被引用地址
2. 地址如果是多语言地区,需要在组件执行时根据标记更替地区资源
1. 根据标记将uuid移除
2. 根据标记记录的地址,在预制体生成时设置对应地区资源
3. 如果是打包的情况,需要对预制体中的组件做检索
4. 如果资源涉及进度条、按钮等携带图片的组件,需要注意是否有设定自有属性,要在替换时同步设置
预制体自动引用资源
不勾选:默认是全地区资源
记录资源引用地址,相对路径到地区文件夹下级
1. 先加载多语言地区资源
2. 不存在地区化,加载全地区资源
3. 不存在资源,直接设置为空
4. 编辑模式下资源为空警告提醒
运行后资源加载,依据顺序执行
勾选:认定为多语言资源
组件提供勾选状态
非多语言限制方案
1. 加载多语言专有资源
2. 不存在直接设置为空
3. 编辑模式下资源为空警告提醒
勾选:多语言专有资源
不勾选:纯粹多语言地区资源
近一步判断资源路径是否为多语言专有路径
提供不可设置的勾选多语言状态和专有状态
多语言专用限制方案
代码加载资源
使用多语言资源
使用地区字体资源,不存在时提供默认字体资源
Fallback List
Empty_SDF_Main
运行时需要根据地区进行引用切换
使用多语言字体
Yq组件拓展
预制设计
存放地区的字体资源,包括:动态和静态的字体Asset文件、字体库
Font
目前全地区的资源只有机器人自动整理的图集
全地区互斥的公共资源
Texture/System:系统模块的资源,按照系统命名区分
Texture/XXXX:同风格的资源,按照样式区分
UI预制体内自动引用的多语言资源
是否要支持和全地区资源一样的自动整理功能?
PubRes
全地区互斥的代码动态加载资源
品质资源文件夹命名:Quality
多语言品质资源文件夹命名:L10nQuality
同为品质类型的图片资源,但是多语言有携带文本。为了专有化多语言资源,命名增加了前缀处理。
文件夹命名区别于上述相似类型的文件夹
文件命名注意不和上述相似类型的文件重名
多语言资源
ScriptDep
全地区互斥的系统模块资源
RefByScript 中存放多语言资源
专属系统模块的代码动态加载多语言资源
UI
....
文件架构
1. 全地区:Assets/App/Runtime/Res/ScriptDep/Texture/Quality 下有一张静态图A
2. 多语言地区:Assets/App/Runtime/Res/Zhcn/ScriptDep/Texture/Quality 下也有一张静态图A
3. 加载时会优先加载多语言地区,有静态图A则使用,如果不存在则加载全地区
for example
互斥规则
0 条评论
下一页