123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
-
- using System;
- using System.Collections.Generic;
- using System.IO;
- using UnityEditor;
- using UnityEngine;
- public class MultilanguageEditorWindow : EditorWindow
- {
- private void OnGUI()
- {
- if (EditorLayout.MiniButtonLeft("刷新语言表"))
- {
- MultiLanguageConfigEditor.RefreshETLocalLangugale();
- }
- if (EditorLayout.MiniButtonLeft("绑定语言表"))
- {
- MultiLanguageConfigEditor.BindETLocalLangugale();
- }
- }
- }
- public static class MultiLanguageConfigEditor
- {
- public static string pathETConfig = "Assets/Resources/localLanguage.asset";
- private static MultiLanguageConfig ETLanguageConfig;
- public static string ETLocalLanguagePath
- {
- get
- {
- string result = Application.dataPath;
- return result + @"/Config/Lan/localLanguage.xlsx";
- }
- }
- [MenuItem("Tools/设置本地语言表")]
- static void OpenMultilanguageEditorWindow()
- {
- EditorLayout.GetWindow<MultilanguageEditorWindow>("本地语言表", new Vector2(300, 500));
- }
- public static void RefreshETLocalLangugale()
- {
- ETLanguageConfig = AssetDatabase.LoadAssetAtPath<MultiLanguageConfig>(pathETConfig);
- FreshLanguage();
- Debug.Log("刷新語言完成!");
- }
- public static void ClearChache()
- {
- PlayerPrefs.DeleteAll();
- }
- public static void BindETLocalLangugale()
- {
- ETLanguageConfig = AssetDatabase.LoadAssetAtPath<MultiLanguageConfig>(pathETConfig);
-
- List<GameObject> listLanGo = GetFileAllPrefab("Bundles/UI");
- string matchRuleName = "lan_";
- for (int i = 0; i < listLanGo.Count; i++)
- {
-
- GameObject go = listLanGo[i];
- Transform[] arr = go.GetComponentsInChildren<Transform>();
- foreach (Transform item in arr)
- {
- if (item.name.Contains(matchRuleName))
- {
-
- LanguageMatch lm = GetLanGoScr(item.gameObject);
- lm.configName = item.name.Replace(matchRuleName, "");
- }
- }
- PrefabUtility.SavePrefabAsset(go);
-
-
- }
- SetSave();
- Debug.Log("本地多语言 绑定完成!");
- }
- static LanguageMatch GetLanGoScr(GameObject go)
- {
- LanguageMatch lm = go.GetComponent<LanguageMatch>();
- if (lm == null)
- lm = go.AddComponent<LanguageMatch>();
- return lm;
- }
- static List<GameObject> GetFileAllPrefab(string assetPath)
- {
- List<GameObject> list = new List<GameObject>();
- string[] aa = Directory.GetFiles(Application.dataPath + "/" + assetPath, "*.prefab", SearchOption.AllDirectories);
- foreach (var item in aa)
- {
- string tt = item.Replace(Application.dataPath + "/", "");
- tt = tt.Replace(@"\", "/");
- tt = "Assets/" + tt;
- GameObject go = AssetDatabase.LoadAssetAtPath<GameObject>(tt);
- list.Add(go);
- }
- return list;
- }
- public static void FreshLanguage()
- {
-
- ReadExcelCoverData(ETLocalLanguagePath, "language");
-
- }
- private static void ReadExcelCoverData(string ExcelPath, string sheetName)
- {
- if (string.IsNullOrEmpty(ExcelPath))
- {
- return;
- }
- ETLanguageConfig.languageInfos = ExcelTool.ReadLanguageData(ExcelPath, sheetName);
- SetSave();
- }
- public static void SetSave()
- {
- EditorUtility.SetDirty(ETLanguageConfig);
- AssetDatabase.SaveAssets();
- AssetDatabase.Refresh();
- }
- }
|