查找界面预设中的中文

Posted U头

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查找界面预设中的中文相关的知识,希望对你有一定的参考价值。

  需求如上一篇。

  预设中很多UILabel,是在编辑器阶段直接赋值,因此需要逐个替换,可以将简体和繁体替换的文字做成字典,简体为key,繁体为value。

  对UIlabel中的text进行逐行替换。

  需要注意换行符

  上代码

 [MenuItem("Assets/misc/批量替换text中的中文")]
    static void 批量替换text中的中文()
    {
        Dictionary<string, string> replaceDic = new Dictionary<string, string>();//替换列表,示例
        replaceDic.Add("简体第一行", "繁体第一行");
        replaceDic.Add("简体第二行", "繁体第二行");


        EditorUtility.DisplayProgressBar("处理中 请稍等", "请勿操作", 0);
        StringBuilder info = new StringBuilder();
        var gameObjects = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);
        for (int i = 0; i < gameObjects.Length; i++)
        {

            EditorUtility.DisplayProgressBar("处理中 请稍等", "正在处理:" + gameObjects[i].name, (i + 1f) / gameObjects.Length);
            string path = AssetDatabase.GetAssetPath(gameObjects[i]);
            if (!path.Contains(".prefab"))
            {
                continue;
            }
            GameObject go = PrefabUtility.InstantiatePrefab(gameObjects[i]) as GameObject;
            UILabel[] uiLabel = go.GetComponentsInChildren<UILabel>(true);
            //获取物体路径
            if (uiLabel.Length > 0)
            {
                for (int j = 0; j < uiLabel.Length; j++)
                {
                    string[] str = uiLabel[j].text.Split("\n".ToCharArray());
                    for (int k = 0; k < str.Length; k++)
                    {
                        if (replaceDic.ContainsKey(str[k]))
                        {
                            string key = str[k];
                            str[k] = replaceDic[key];
                        }
                    }
                    string allStr = "";
                    for (int k = 0; k < str.Length; k++)
                    {
                        allStr += str[k];
                        if (k != str.Length - 1)
                        {
                            allStr += "\n";
                        }
                    }
                    uiLabel[j].text = allStr;
                }
            }
            PrefabUtility.ReplacePrefab(go, gameObjects[i]);//替换
            Object.DestroyImmediate(go);
        }
        AssetDatabase.SaveAssets();//保存
        AssetDatabase.Refresh();
        EditorUtility.ClearProgressBar();
    }

 

以上是关于查找界面预设中的中文的主要内容,如果未能解决你的问题,请参考以下文章

我的OpenGL学习进阶之旅NDK开发中find_library查找的系统动态库在哪里?

我的OpenGL学习进阶之旅NDK开发中find_library查找的系统动态库在哪里?

Android 插件化VirtualApp 源码分析 ( 目前的 API 现状 | 安装应用源码分析 | 安装按钮执行的操作 | 返回到 HomeActivity 执行的操作 )(代码片段

如何创建片段以重复变量编号中的代码行

使用 Git 来管理 Xcode 中的代码片段

将接口从片段传递到kotlin中的活动