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