我正在为某种类型的组件脚本创建一个编辑器脚本,我想访问该编辑器脚本实例引用的特定组件脚本。例如,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
至 MonoBehaviour
并使用 GetComponent
获取组件的函数。
MonoBehaviour monoBev = (MonoBehaviour)target;
CameraCutscene cameraCutscene = monoBev.GetComponent<CameraCutscene>();
The game object may have multiple components of this type and so needs to get the specific one.
如果你需要访问 CameraCutscene
的多个实例附加到同一目标的脚本然后使用 GetComponents
它返回附加到目标的组件数组。注意其中的's'。请注意,它们返回的顺序未记录在案。
MonoBehaviour monoBev = (MonoBehaviour)target;
CameraCutscene []cameraCutscene = monoBev.GetComponents<CameraCutscene>();
关于c# - 编辑器脚本附加到的 Unity Access 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51631324/