c# - 编辑器脚本所附的Unity Access脚本

原文 标签 c# unity3d

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

[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>();

关于c# - 编辑器脚本所附的Unity Access脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51631324/

相关文章:

c# - 为什么我的 Windows 窗体应用程序会在计算机之间改变大小?

c# - 在Windows Form应用程序中从串行端口接收数据

c# - IIS中的WCF服务调用中未找到目录错误

ios - 在iOS App中, Controller 未点击屏幕右侧

unity3d - GetComponent <Image>().enabled和.SetActive(false)之间有什么区别?团结一致

c# - 在C#和Unity中更改文本颜色特定时间

unity3d - 如何为Google Play游戏签名Unity应用包

c# - Process.start:如何获得输出?

c# - 如何选择异步委托(delegate)的返回类型

c# - 从Unity ARCore将AcquireCameraImageBytes()保存为图像存储