1. 程式人生 > >Unity3d 載入UnityEngine.UI.dll失敗的解決方案(2017.2)

Unity3d 載入UnityEngine.UI.dll失敗的解決方案(2017.2)

在 Unity 官方論壇找到的解決方法是重新載入 UnityEngine.UI.dll ,把下面的指令碼扔到專案裡,然後右鍵選單中就會出現 

編寫一個這樣的指令碼

using UnityEngine;  
using System.Collections.Generic;  
using UnityEditor;  
using System.Text.RegularExpressions;  
using System.IO;  
using System.Text;  
  
public class ReimportUnityEngineUI {  
    [MenuItem("Assets/Reimport UI Assemblies", false, 100)]  
    public static void ReimportUI() {  
#if UNITY_4_6  
        var path = EditorApplication.applicationContentsPath + "/UnityExtensions/Unity/GUISystem/{0}/{1}";  
        var version = Regex.Match(Application.unityVersion, @"^[0-9]+\.[0-9]+\.[0-9]+").Value;  
#elif UNITY_4_7  
        var path = EditorApplication.applicationContentsPath + "/UnityExtensions/Unity/GUISystem/{0}/{1}";  
        var version = Regex.Match(Application.unityVersion, @"^[0-9]+\.[0-9]+\.[0-9]+").Value;  
#else  
        var path = EditorApplication.applicationContentsPath + "/UnityExtensions/Unity/GUISystem/{1}";  
        var version = string.Empty;  
#endif  
        string engineDll = string.Format(path, version, "UnityEngine.UI.dll");  
        string editorDll = string.Format(path, version, "Editor/UnityEditor.UI.dll");  
        ReimportDll(engineDll);  
        ReimportDll(editorDll);  
  
    }  
    static void ReimportDll(string path) {  
        if (File.Exists(path))  
            AssetDatabase.ImportAsset(path, ImportAssetOptions.ForceUpdate | ImportAssetOptions.DontDownloadFromCacheServer);  
        else  
            Debug.LogError(string.Format("DLL not found {0}", path));  
    }  
}   

編譯後在編輯器介面點選操作執行。