不知道是不是我的使用方式问题,本地化似乎有个 bug
Closed this issue · 11 comments
直接把代码下载下来,没用导入包的方式,(导入包的方式没这个问题)
每次调用 FF8.Local.下的方法,都会创建新的 Localization模块,在F88.cs
public static Localization Local
{
get
{
if (_localization == null)//这里永远都会判定为空,然后新建一个新的
_localization = ModuleCenter.CreateModule<Localization>();
return _localization;
}
set
{
if (_localization == null)
_localization = value;
}
}
有什么提示吗?
1.创建游戏模块: Localization
2.Localization不是通过模块中心创建并控制(无**询Update),仅在编辑器下可以临时使用。
1才是正常创建,2是编辑器下可以临时使用
没有 2,启动游戏的时候5/8/2024 12:57:15 AM[模块日志]创建游戏模块: Localization
然后各种打印是关于初始化多语言的,获取本地化表格成功!之类的
手动调用 string text1 = Localization.Instance.GetTextFromIdLanguage("test",FF8.Local.CurrentLanguageName);
然后再次提示
AM[模块日志]创建游戏模块: Localization
[error]模块 F8Framework.Core.Localization 实例已创建。
每次手动调用都会重复上面这些(就是再次创建)
我的方式是直接把代码下载下来放到项目里,没有使用包管理器导入
静态的变量没有清理,可能是项目开了热重载,快速重载脚本之类的。
应该没有,unity 设定是默认的,没有修改Reload Domain 之类的设定
可恶,应该是我这里的问题,还要查查,一个项目没问题,一个项目有这个问题
哈哈哈哈哈哈啊哈哈哈哈哈我找到这个bug了,就挺尴尬的,我的本地化表,如果有id,但是没内容其实会出现这个问题
Localization.LoadSuccess方法里,这个 bug 就挺尴尬的,我觉得不应该这样,如果策划手贱拉了一列
我觉得这样会好点,兼容性好点
foreach (var item in tb.Values)
{
if(item.TextID == null)
{
continue;
}
....
}
666这也能找到😄晚点改了
已修复 1.0.5 本地化表TextID可为空
顺便问个问题,我发现打开了本地化Excel的话,启动项目是被报错的,所以是直接读取了 Excel 文件,是否有不直接读取Excel,直接手动点击导出的方式,因为有时需要看着 Excel 来改东西
我想了下,确实没必要实时监控本地化表