MonoBehaviour 类提供了一个框架,允许您在编辑器中将脚本附加到游戏对象。它还提供了指向有用事件(例如 Start 和 Update)的钩子。
您可以在编辑器中创建新的 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 脚本参考页面上的消息部分