Unity 3D 中的 MonoBehaviour 是什么?

问题描述 投票:0回答:5
using UnityEngine;
using System.Collections;

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

完整代码在这里Unity官方教程

MonoBehaviour的目的是什么

c# unity-game-engine
5个回答
37
投票
MonoBehaviour 是每个 Unity 脚本派生的基类。它提供了一些生命周期功能,可以让您更轻松地开发应用程序和游戏。 一图胜千言。

图片来源:

https://docs.unity3d.com/uploads/Main/monobehaviour_flowchart.svg

enter image description here


9
投票
虽然以下陈述是正确的,

    “MonoBehaviour 是每个 Unity 脚本派生的基类”-
老实说,我觉得这可能会误导初学者。罪魁祸首是“每个 Unity 脚本”这句话。

它给初学者一个概念:所有统一创建的脚本都必须扩展 Monobehaviour。事实并非如此。您可以创建包含扩展 C# 基对象类的类的脚本。这样做时,您的脚本将被归类为非 Unity 脚本,但没有什么可以阻止它与其他 Unity 脚本交互,反之亦然。


2
投票

MonoBehaviour

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

在下面的示例中,

Class1

继承自
Base
,因此可以使用
protected
方法
Method1


public class Base { protected void Method1 { /*...*/ } } public class Class1 : Base { public void Method2 { Method1(); } }

请注意,在这个特定示例中,最好将

Method1

 标记为 
abstract
virtual
,这样 
Class1
 就可以像这样覆盖它:

protected override Method1() { //... base.Method1(); //Call the implementation of Method1 in Base here //... }

特别是虽然

MonoBehaviour

 被描述为:

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

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


0
投票
Monobehavior 是大多数脚本所继承的,

如果您要查看文档,请单击

此处

您将看到从该继承中获得的一堆变量和方法。 如:

    公共方法
  1. 留言
  2. 属性
  3. 公共方法
  4. 静态方法
最常用的方法(它在文档中的消息下,但老实说最好将其视为函数)是

Update ,它是主游戏循环,调用更新函数的速度基于您的 fps。但重要的是,如果您没有继承单一行为,您将无法访问此游戏循环。

从 Monobehavior 获得的另一个重要函数是 Start,它在脚本上调用一次,并在唤醒后调用,因此如果您想设置一些变量,可以在这里完成。

需要注意的重要一点是,如果您创建了一个从无继承的简单 C# 类,您将无法访问所讨论的这些方法。 Monobehavior 使您可以访问许多可帮助您构建游戏的功能。

您的脚本还可以继承其他行为,例如 ScriptableObject 和 StateMachineBehaviour,它们使您可以访问其他方法,但 Monobehavior 是您的脚本继承的最常见行为。

还需要注意的是,每当您使用 Monobehavior 时,它都会附带转换,而其他一些脚本(Scriptable 对象)则不会附带转换。变换只是游戏/场景中游戏对象位于具有旋转和缩放的 x、y、z 坐标的位置。


-4
投票
你的南----------------------:)

© www.soinside.com 2019 - 2024. All rights reserved.