static void AddScript() { if (EditorApplication.isCompiling || EditorApplication.isUpdating) { EditorUtility.DisplayDialog("info", "稍后再尝试.... Unity正在编译", "OK"); return; } string[] assetGUIDs = Selection.assetGUIDs; UGUIScriptGenerator temp = new UGUIScriptGenerator(); for (int i = 0; i < assetGUIDs.Length; i++) { string path = GetPathRelativeToResourceByGUID(assetGUIDs[i]); int index = path.LastIndexOf("/"); string name = path.Substring(path.LastIndexOf("/") + 1); bool find = false; foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) { Type t = assembly.GetType(string.Format("{0}.{1}", UIGlobalDefine.UINameSPace, name + UIGlobalDefine.ViewScriptSuffix)); //version44.2 if (t != null) { //添加对应的Script脚本 到prefab上 UnityEngine.Object obj = Resources.Load(path); GameObject go = GameObject.Instantiate(obj) as GameObject; UIViewBase test = go.GetComponent(t) as UIViewBase; if (test == null) { test = go.AddComponent(t) as UIViewBase; test.Awake(); //EditorUtility.SetDirty(go); PrefabUtility.ReplacePrefab(go, obj); } GameObject.DestroyImmediate(go); obj = null; go = null; find = true; break; } } if (!find) { Debug.LogWarning("没找到prefab对应的脚本:" + path); } } Resources.UnloadUnusedAssets(); }
static void Prefab2ScriptMethod2() { string[] assetGUIDs = Selection.assetGUIDs; UGUIScriptGenerator temp = new UGUIScriptGenerator(); for (int i = 0; i < assetGUIDs.Length; i++) { string path = GetPathRelativeToResourceByGUID(assetGUIDs[i]); if (path != null) { temp.ProcPrefabFile(path); } } // popup if (Environment.OSVersion.Platform == PlatformID.Win32NT) { string outputDir = Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + UGUIScriptGenerator.OutputDirName; System.Diagnostics.Process.Start("explorer.exe", outputDir); } }
static void Prefab2ScriptMethod() { UGUIScriptGenerator temp = new UGUIScriptGenerator(); temp.PrefabToScript(); }