TippingGame/F8Framework

不知道是不是我的使用方式问题,本地化似乎有个 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 来改东西

我想了下,确实没必要实时监控本地化表