代码之家  ›  专栏  ›  技术社区  ›  Will Anderson

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

  •  1
  • Will Anderson  · 技术社区  · 6 年前

    我正在为某种类型的组件脚本创建一个编辑器脚本,我想访问该编辑器脚本实例引用的特定组件脚本。例如,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
        }
    }
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   Programmer    6 年前

    这个 target 变量是 UnityEditor.Object . 若要从附加到组件的脚本访问该组件,请将 UnityEditor.对象 MonoBehaviour 使用 GetComponent 函数获取组件。

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

    游戏对象可能有这种类型的多个组件,因此需要 得到具体的一个。

    如果需要访问 CameraCutscene 附加到同一目标的脚本,然后使用 GetComponents 它返回附加到目标的组件的数组。注意里面的“s”。请注意,它们返回的顺序没有记录在案。

    MonoBehaviour monoBev = (MonoBehaviour)target;
    CameraCutscene []cameraCutscene = monoBev.GetComponents<CameraCutscene>();