实例化派生自 MonoBehavior 的类

本文关键字:的类 MonoBehavior 派生 实例化 | 更新日期: 2023-09-27 17:56:14

有没有办法实例化派生自MonoBehavior的类,例如下面的示例,而不会收到警告:"您正在尝试使用'new'关键字创建MonoBehavior。 这是不允许的。 MonoBehaviors只能使用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);
    }
}

实例化派生自 MonoBehavior 的类

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

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

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

只是不要从 MonoBehavior 派生它。

public class Move 
{
    public int number = 5;
    public void Printing()
    {
        print(number);
    }
}

如果它真的必须是 MonoBehavior,这意味着您可能将其放在预制件上,在这种情况下,您可以使用 Instantiate()。