Version: Unity 6.0 (6000.0)
语言 : 中文
对象
ScriptableObject

MonoBehaviour

Switch to Scripting

MonoBehaviour 类提供了一个框架,允许您在编辑器中将脚本附加到游戏对象。它还提供了指向有用事件(例如 StartUpdate)的钩子。

您可以在编辑器中创建新的 MonoBehaviour 脚本,如创建脚本中所述。

有关 MonoBehaviour 类的每个成员及其技术细节的完整参考,请参阅 MonoBehaviour 脚本参考

检视面板窗口中的脚本

MonoBehaviour 脚本文件的内容

双击 Unity 中的脚本资源以在文本编辑器中打开此脚本。默认情况下,Unity 将使用 Visual Studio,但您可以从 Unity 的偏好设置中的外部工具 (External Tools) 面板选择所需的任何编辑器(Unity 的偏好设置打开方式:访问菜单,然后依次选择 Unity > 偏好 (Preferences))。

如果选择创建 MonoBehaviour 脚本,文件的初始内容将如下所示:

using UnityEngine;
using System.Collections;

public class NewMonoBehaviourScript : MonoBehaviour {

    // Start is called once before the first execution of Update after the MonoBehaviour is created
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

为了连接到 Unity 的内部架构,脚本将实现一个类,此类从称为 MonoBehaviour 的内置类派生而来。可以将类视为一种蓝图,用于创建可附加到游戏对象的新组件类型。每次将脚本组件附加到游戏对象时,都会创建该蓝图定义的对象的新实例。类的名称取自创建文件时提供的名称。最好保持类名和文件名同步,请参阅命名注意事项

然而,必须注意在类中定义的两个函数。Update 函数是放置代码的地方,用于处理游戏对象的帧更新。这可能包括移动、触发动作和响应用户输入,基本上涉及游戏运行过程中随时间推移而需要处理的任何事项。为了使 Update 函数正常运行,在进行任何游戏操作之前,通常需要确保能够设置变量、读取偏好设置以及与其他游戏对象建立连接。在游戏开始之前(即第一次调用 Update 函数之前),Unity 将调用 Start 函数;此函数是进行所有初始化的理想位置。

注意:有经验的程序员可能会惊讶于没有使用构造函数来完成对象初始化。这是因为对象的构造由 Unity 编辑器处理,不会像您可能期望的那样在游戏运行过程开始时进行。如果尝试为 MonoBehaviour 定义构造函数,将会干扰 Unity 的正常运行,并可能导致项目出现重大问题。

控制游戏对象

脚本只定义了组件的蓝图,因此在将脚本实例附加到游戏对象之前,不会激活其任何代码。为了附加脚本,可将脚本资源拖动到层级视图面板中的游戏对象,或拖动到当前选定游戏对象的检视面板。Component 菜单上还有一个 Scripts 子菜单,其中包含项目中可用的所有脚本,包括自定义的脚本。脚本实例看起来很像检视面板中的所有其他组件:

附加脚本后,按 Play 并运行游戏时,脚本将开始工作。可以通过在 Start 函数中添加以下代码来检查此状态:

// Use this for initialization
void Start () 
{
    Debug.Log("Hello world!");
}

Debug.Log 是一个简单的命令,只是将消息输出到 Unity 的控制台。如果按“立即播放 (Play now)”,应该会在编辑器主窗口底部以及控制台窗口(菜单:__窗口 (Window)__ > 常规 (General) > 控制台 (Console))中看到该消息。

协程

MonoBehaviour 类允许您启动、停止和管理协同程序。

有关协同程序的更多信息,请参阅协同程序StartCoroutine 方法脚本参考

事件

MonoBehaviour 类提供对大量事件函数的访问,允许您根据项目中当前发生的情况执行代码。下面是一些比较常见的例子。有关完整的列表,请参阅 MonoBehaviour 脚本参考页面上的消息部分

其他资源

对象
ScriptableObject