【问题标题】:Unity Access Script the Editor Script is attached to编辑器脚本附加到的 Unity Access 脚本
【发布时间】:2019-01-08 21:49:20
【问题描述】:

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

[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
    }
}

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

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

    【讨论】:

    • 只是为了向未来的访问者澄清,转换为 MonoBehaviour 然后让组件工作,转换为 GameObject 没有。
    • @WillAnderson 以前工作过。修改后的答案以反映这一点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多