首页 > 学院 > 开发设计 > 正文

UnityEditor 打开对应类

2019-11-06 09:50:57
字体:
来源:转载
供稿:网友

编辑器查找类,并打开:

public class EventGraphAction { PRivate static Dictionary<string, string> ClassFiles = null; public static bool OpenInEditor(string className) { if (ClassFiles == null) { ClassFiles = new Dictionary<string, string>(); DirSearch("Assets/"); } foreach (KeyValuePair<string, string> entry in ClassFiles) { if (entry.Key.Equals(className)) { OpenClass(entry.Value); return true; } } return false; } public static void OpenClass(string classPath) {#if UNITY_EDITOR string AssetPath = classPath.Substring(application.dataPath.Length, classPath.Length - Application.dataPath.Length); AssetPath = "Assets" + AssetPath; string guid = AssetDatabase.AssetPathToGUID(AssetPath); // AssetDatabase.OpenAsset() // Check is Script Inspector 2 installed first... // Should be in the same assembly as your CodeArchitectureHelper class (or any other C# Editor class) var si2WindowType = System.Type.GetType("FGCodeWindow"); if (si2WindowType != null) { var openAssetInTab = si2WindowType.GetMethod("OpenAssetInTab", new System.Type[] { typeof(string), typeof(int) }); if (openAssetInTab != null) { openAssetInTab.Invoke(null, new object[] { guid, -1 }); return; } } UnityEditorInternal.InternalEditorUtility.OpenFileAtLineExternal(classPath, 0);#endif } private static void DirSearch(string sDir) { try { DirectoryInfo dir = new DirectoryInfo(sDir); foreach (DirectoryInfo d in dir.GetDirectories()) { foreach (FileInfo f in d.GetFiles()) { if (f.Extension == ".cs") { string name = f.Name.Substring(0, f.Name.Length - 3); ClassFiles.Add(name, f.FullName); } } DirSearch(d.FullName); } } catch (System.Exception excpt) { Debug.LogWarning(excpt.Message); } }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表