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

标签 c# unity3d

我正在为某种类型的组件脚本创建一个编辑器脚本,我想访问该编辑器脚本实例引用的特定组件脚本。例如,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.ObjectMonoBehaviour并使用 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/

相关文章:

c# - 使用 GZipStream 将文本文件写入 gz 文件,而无需先将文本文件写入磁盘

c# - 我应该有多少个 GC 线程?

c# - Unity - 在列表中找不到对象

c# - 使用 PlayOneShot 时如何停止音频

android - 创建 GameServices 对象时出错

c# - 入队 C# 队列

c# 和 java - hmacsha256 哈希之间的区别

c# - Canvas.GetTop() 返回 NaN

unity3d - Unity 项目是否有标准/推荐的目录结构?

java - 去除Unity制作的Android应用启动时的白屏和黑屏