Unity 编辑器从文件路径 ping 类单脚本文件



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

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上,但我找不到关于这个主题的任何结论性答案。知道我已经寻找解决方案,并正在转向互联网寻求帮助。

谢谢

我意识到关于命名空间不与文件夹路径对齐的评论是正确的,所以从技术上讲,我也没有文件路径。我不知道如何从类型中获取文件路径,以便我希望可以从上面的评论中ping文件。

我最终选择了一条更糟糕的路线,我提供了使用事件调用传入对象(单声道或可脚本化对象(的选项,这样编辑器就可以通过 MonoScript.FromMonobehavior 或 Monoscript.FromScriptableObject 对对象进行 ping 操作。

我不太喜欢这个解决方案,但它是我能做的最好的解决方案。如果有人知道如何获取文件路径,然后ping.cs文件,我将不胜感激!

最新更新