查找界面预设中的中文
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 执行的操作 )(代码片段