实例化一个派生自MonoBehaviour的类

时间:2015-06-15 16:04:53

标签: c# inheritance unity3d

有没有办法实例化一个派生自MonoBehaviour的类,例如下面的示例而没有收到警告:"您正在尝试使用' new'来创建MonoBehaviour。关键词。这是不允许的。 MonoBehaviours只能使用AddComponent()添加。或者,您的脚本可以继承ScriptableObject,也可以不继承基类#34;

示例:

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

2 个答案:

答案 0 :(得分:0)

有几种方法可以做到这一点,最简单的可能是使用AddComponent,因为错误消息表明:

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

你不能只是new一个派生自MonoBehaviour的对象的原因是这些对象必须是GameObject的一个组件。因此,无论何时创建一个,都必须确保以有效的方式添加它。

答案 1 :(得分:0)

不要从MonoBehaviour派生出来。

public class Move 
{
    public int number = 5;

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

如果它真的必须是MonoBehaviour,那意味着你可能在预制件上有它,在这种情况下你使用Instantiate()。