c# - 实例化一个派生自 MonoBehaviour 的类

标签 c# inheritance unity3d

<分区>

有没有一种方法可以实例化从 MonoBehaviour 派生的类,例如下面的示例而不会收到警告:“您正在尝试使用‘new’关键字创建 MonoBehaviour。这是不允许的。只能添加 MonoBehaviours使用 AddComponent()。或者,您的脚本可以继承自 ScriptableObject 或根本不继承基类”

例子:

public class e1506131012test2 : MonoBehaviour 
{
    Move move = new Move();
    //Move move = gameObject.GetComponent<Move>();

    void Update()
    {
        move.Printing();
    }

}

public class Move : MonoBehaviour 
{
    public int number = 5;

    public void Printing()
    {
        print(number);
    }
}

最佳答案

有几种方法可以做到这一点,最简单的可能是使用 AddComponent如错误消息所示:

Move move;
void Start()
{
    move = gameObject.Addcomponent<Move>();
}

您不能只新建 派生自 MonoBehaviour 的对象的原因是此类对象必须是 GameObject 的组件。因此,无论何时创建,都必须确保以有效方式添加。

关于c# - 实例化一个派生自 MonoBehaviour 的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30849855/

相关文章:

java - 我应该使用这样的界面吗?

unity3d - Unity Google Analytics 插件在 Unity 编辑器中运行良好,但在 Android 上不记录任何内容

c# - 如何将鼠标移动位置值存储在数组中?

collision-detection - 如何从 hit.normal 中找到对撞机的哪一侧被击中?

c#为虚拟机分配内存

c# - 在 wpf C# 中使用点访问二维数组

c# - 对对象的 MVC4 linq 查询未作为正确的对象出现

c# - 如何在 C# 中实例化具有抽象约束的泛型类

c# - IDX10632 : SymmetricSecurityKey. GetKeyedHashAlgorithm( 'HS512') 在使用 HS512 ALGO 验证 JWT 时抛出异常

来自私有(private)继承类的 C++ 虚函数,在派生类声明中提升为公共(public)