Unity编辑器从文件路径ping类monoscript文件

时间:2019-12-08 03:57:08

标签: unity3d unity-editor

我有一个用于事件系统的代表列表。我正在使用一个自定义编辑器,该编辑器查看代表列表并显示带有代表名称的按钮。我想知道如何使用editor ping object来探查委托所驻留的脚本。由于Delegate.Method.DeclaringType,我具有.cs文件的文件路径,我只是不知道如何找到要ping的脚本对象。

                foreach (var callback in obj.Callbacks)
                {
                   // Path to .cs file
                   var path = callback.Method.DeclaringType + ".cs";

                   // Button showing the delegates
                   if(GUILayout.Button($"{callback.Method.Name}", new GUIStyle(EditorStyles.objectField))){

                   // WANT TO PING .cs FILE OF THE DELEGATE FROM FILE PATH ON BUTTON CLICK 
                   //EditorGUIUtility.PingObject((MonoScript.FromMonoBehaviour(path));}}

我知道关于stackoverflow的类似问题,但是我找不到关于该主题的任何结论性答案。知道我一直在寻找解决方案,并正在向互联网寻求帮助。

谢谢

1 个答案:

答案 0 :(得分:0)

我意识到关于名称空间未与文件夹路径对齐的注释是正确的,因此从技术上讲我也没有文件路径。我无法弄清楚如何从类型中获取文件路径,以便希望从上面的注释中引用该文件。

我最终走了一条更糟的路线,在该路线上,我可以选择通过事件调用传递对象(单声道或可编写脚本的对象),以便编辑器可以通过MonoScript.FromMonobehaviour或Monoscript.FromScriptableObject来对对象进行ping操作。

我不太喜欢这种解决方案,但是我可以尽其所能。如果有人知道如何获取文件路径,那么对.cs文件执行ping操作,我将非常感谢您的答复!