Unity 3D中的MonoBehaviour是什么?

时间:2017-01-13 09:13:06

标签: c# unity3d

using UnityEngine;
using System.Collections;

public class VariablesAndFunctions : MonoBehaviour
{   
    int myInt = 5;
}

完整代码在Unity Official Tutorials

MonoBehaviour

的目的是什么?

3 个答案:

答案 0 :(得分:14)

MonoBehaviour是每个Unity脚本派生的基类。它提供了一些生命周期功能,使您可以更轻松地开发应用程序和游戏。 一张图片值得成千上万的话。

图片来源:https://docs.unity3d.com/uploads/Main/monobehaviour_flowchart.svg

enter image description here

答案 1 :(得分:5)

以下陈述正确无误,

  • “ MonoBehaviour是每个Unity脚本都派生自的基类”-

老实说,这可能会误导初学者。罪魁祸首-“每个Unity脚本”。

它为初学者提供了一个概念,即所有以统一方式创建的脚本都必须扩展Monobehaviour。事实并非如此。您可以创建脚本来容纳扩展c#基础对象类的类。这样,您的脚本便被归类为不是Unity脚本,但是没有阻止它与其他Unity脚本进行交互的过程,反之亦然。

答案 2 :(得分:2)

MonoBehaviour是另一个VariablesAndFunctions继承的类。这允许继承者使用其他类的方法和变量,只要它们具有正确的访问级别修饰符集。

在下面的示例Class1继承自Base,因此可以使用protected方法Method1

public class Base
{
    protected void Method1 { /*...*/ }
}

public class Class1 : Base
{
    public void Method2 { Method1(); }
}

请注意,在此特定示例中,Method1最好标记为abstractvirtual,以便Class1可以覆盖它,如下所示:

protected override Method1()
{
    //...

    base.Method1(); //Call the implementation of Method1 in Base here

    //...
}

特别是MonoBehaviour被描述为:

  

MonoBehaviour是每个Unity脚本派生的基类。

因此,在统一编写脚本时,您可以使用此基类来更好地控制事物的访问方式,因此您不需要自己执行此操作。