【问题标题】:What is MonoBehaviour in Unity 3D?Unity 3D 中的 MonoBehaviour 是什么?
【发布时间】:2017-01-13 09:13:05
【问题描述】:
using UnityEngine;
using System.Collections;

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

完整代码在这里Unity Official Tutorials

MonoBehaviour

的目的是什么

【问题讨论】:

  • 它是一个提供诸如Start()、Update()等入口方法的类,所以你不必担心这些事情。
  • 好的,明白了。谢谢:)
  • 你应该阅读一些 C# 基础知识
  • 在寻求帮助之前,您真的应该尝试搜索引擎。谷歌“什么是 unity3d monobehaviour”——首先是官方文档解释它。

标签: c# unity3d


【解决方案1】:

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

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

【讨论】:

  • 只是补充一点,它还允许在编辑器中被视为一个组件,因此您可以将其拖到检查器中。
【解决方案2】:

虽然下面的说法是正确的,

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

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

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

【讨论】:

  • 这是一个有效且有趣的观点,但对我来说,最初的问题(当然,太模糊了)更多的是关于超类的声明实际上意味着什么。否则,我的猜测是他们在询问 MonoBehaviour 类是什么以及做什么。你的回答开启了一个不同的讨论:一个关于架构的讨论。
  • 感谢您澄清这一点-我确实是这么想的:monobehaviour 是 C# 版本的“所有 Java 类都派生自 Object”
【解决方案3】:

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 脚本派生的基类。

因此,在统一编写脚本时,您可以使用此基类来更好地控制访问内容的方式,因此您无需自己动手。

【讨论】:

  • @ShafikShaon 表示MonoBehaviour是基类,VariablesAndFunctions是继承自它的类
【解决方案4】:

Monobehavior 是您的大多数脚本所继承的,

如果你去文档点击here!

你会看到一堆你从这个继承中得到的变量和方法。 如:

  1. 公共方法
  2. 消息
  3. 属性
  4. 公共方法
  5. 静态方法

最常用的方法(它在文档中的消息下方,但老实说,最好将其视为一个函数)是 Update ,它是主游戏循环,更新函数的速度是调用是基于你的fps。但要带走的重要一点是,如果您没有从 monobehavior 继承,您将无法访问此游戏循环。

你从 Monobehavior 获得的另一个重要函数是 Start,它在脚本上调用一次,在 awake 之后调用,所以如果你想设置一些变量,你可以在这里进行。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    相关资源
    最近更新 更多