我正在为某种类型的组件脚本创建编辑器脚本,我想访问由该编辑器脚本实例引用的特定组件脚本。例如,目标返回编辑器附加到的游戏对象,但我想在其中获取实际的脚本组件。游戏对象可能具有这种类型的多个组件,因此需要获取特定的组件。
[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
强制转换为MonoBehaviour
并使用GetComponent
函数获取组件。
MonoBehaviour monoBev = (MonoBehaviour)target;
CameraCutscene cameraCutscene = monoBev.GetComponent<CameraCutscene>();
游戏对象可能具有此类型的多个组件,因此需要
得到一个具体的。
如果您需要访问附加到相同目标的
CameraCutscene
脚本的多个实例,请使用GetComponents
,它返回附加到目标的组件的数组。注意其中的“ s”。请注意,它们返回的顺序没有记录。MonoBehaviour monoBev = (MonoBehaviour)target;
CameraCutscene []cameraCutscene = monoBev.GetComponents<CameraCutscene>();