在Unity项目中制作多语言版本,由于前期没规划,现在所有界面的UILabel同级对象都需添加UILocalize控件,想想那几十个Prefab如果手动修改那真蛋疼。
示例代码下载
string prefabDir = Application.dataPath + “/Resources/UI”;
DirectoryInfo dirInfo = new Directory(prefabDir);
FileInfo[] files = dirInfo.GetFiles(“*.prefab”,SearchOption.AllDirectories);
foreach(FileInfo file in files)
{
string path = file.FullName.Replace(“\”,”/”); //For Windows
string assetPath = path.Substring(path.IndexOf(“Assets/”));
GameObject prefab = AssetDatabase.LoadAssetAtPath(assetPath,typeof(GameObject)) as GameObject;
GameObject go = PrefabUtility.InstantiatePrefab(prefab) as GameObject;
//OperatePrefab(go.tranform)
GameObject newPrefab = PrefabUtility.CreateEmptyPrefab(assetPath);
PrefabUtility.ReplacePrefab(go,newPrefab,ReplacePrefabOptions.Default);
GameObject.DestroyImmediate(go);
}