C# 编辑器脚本附加到的Unity Access脚本

C# 编辑器脚本附加到的Unity Access脚本,c#,unity3d,C#,Unity3d,我正在为特定类型的组件脚本创建一个编辑器脚本,我想访问编辑器脚本实例引用的特定组件脚本。例如,target返回编辑器附加到的游戏对象,但我希望得到其中的实际脚本组件。游戏对象可能有多个此类型的组件,因此需要获取特定的组件 [CustomEditor(typeof(CameraCutscene))] //Attaches to the CameraCutscene script public class CutsceneEditor : Editor { private CameraCut

我正在为特定类型的组件脚本创建一个编辑器脚本,我想访问编辑器脚本实例引用的特定组件脚本。例如,target返回编辑器附加到的游戏对象,但我希望得到其中的实际脚本组件。游戏对象可能有多个此类型的组件,因此需要获取特定的组件

[CustomEditor(typeof(CameraCutscene))] //Attaches to the CameraCutscene script
public class CutsceneEditor : Editor
{
    private CameraCutscene cameraCutscene;

    private void OnEnable()
    {
        Debug.Log(target.name);
        cameraCutscene = (CameraCutscene)target; //Attempt to cast to the script type but target returns the actual game object
    }
}

target
变量是
UnityEditor.Object
的一种类型。要从附加到组件的脚本访问组件,请将
UnityEditor.Object
强制转换为
monobhavior
,并使用
GetComponent
函数获取组件

MonoBehaviour monoBev = (MonoBehaviour)target;
CameraCutscene cameraCutscene = monoBev.GetComponent<CameraCutscene>();

只是为了向未来的访问者澄清,向MonoBehavior施法,然后让组件工作,向GameObject施法并没有。@WillAnderson以前工作过。修改答案以反映这一点
MonoBehaviour monoBev = (MonoBehaviour)target;
CameraCutscene []cameraCutscene = monoBev.GetComponents<CameraCutscene>();