• 创建和使用脚本
    • 创建脚本
    • 脚本文件剖析
    • 控制游戏对象

    创建和使用脚本

    游戏对象的行为由绑定的 组件 所控制。尽管 Unity 内置的组件非常灵活多样,但是你很快就会发现它们提供的功能远远不够,为了实现你所要的游戏功能,你需要超越它们才行。Unity 支持通过 脚本 创建属于你自己的组件。在组件中,随着时间的推移,你可以触发游戏事件、修改组件属性,还可以以任何你喜欢的方式来响应用户输入。

    Unity 内置支持两种编程语言:

    • C# 一种工业标准语言,类似于 Java 或 C++;
    • UnityScript 一种专为 Unity 设计的语言,模仿自 JavaScript;

    除此之外,许多其他可以编译为兼容 DLL 的语言也可以用于 Unity —— 更多细节请查阅 这里。

    学习编程艺术和使用这些特定语言超出了本文的范围。不过,有许多书籍、指南和其他资源可以让你学习如何在 Unity 中编程。请参阅我们网站的 学习部分 了解更多细节。

    创建脚本

    与其他大多数资源文件不同的是,脚本通常是直接在 Unity 中创建。你可以通过 Project 面板左上角的 Create 菜单创建一个新脚本,或者从主菜单选择 Assets > Create > C# Script (或 JavaScript) 。

    新脚本将被创建在 Project 面板中选中的文件夹下。新脚本的文件名将被选中,提示你输入一个新的名称。

    创建和使用脚本 - 图1

    最好是在这个时候为新脚本输入名称,而不是在以后再修改。你输入的脚本名称将被用于初始化文件的内容,如下所述。

    脚本文件剖析

    当你在 Unity 中双击一个脚本文件时,它将被一个文件编辑器打开。默认情况下,Unity 会使用 MonoDevelop,你也可以在 Unity 偏好设置的 External Tools 面板中选择任何你喜欢的编辑器。

    脚本文件的初始内容会是这个样子:

    1. using UnityEngine;
    2. using System.Collections;
    3. public class MainPlayer : MonoBehaviour {
    4. // Use this for initialization
    5. void Start () {
    6. }
    7. // Update is called once per frame
    8. void Update () {
    9. }
    10. }

    脚本通过继承内置类 MonoBehaviour 与 Unity 相连接。你可以把类当作是一种设计图,它可以创建一个新的组件,并绑定到游戏对象上。每当你把脚本组件绑定到游戏对象上时,会创建一个由设计图定义的对象实例。类的名称来自于文件创建时你提供的文件名。类名和文件名必须一致,这个脚本组件才能被绑定到游戏对象。

    特别需要注意在类中定义的两个函数。函数 Update 用于放置处理游戏对象桢更新的代码。可能包括移动、触发动作和响应用户输入等,基本上包含了任何游戏运行时随着时间推移需要处理的事情。为了让 Update 函数能够工作起来,通常需要在任何游戏行为发生前,设置变量、读取配置和连接其他游戏对象。函数 Start 在游戏开始前被 Unity 调用(例如,第一次调用 Update 函数之前),是执行初始化的理想场所。

    老司机请注意:你可能会惊讶于一个对象的初始化居然没有用到构造函数,这是因为,对象的构造过程是由编辑器处理的,而且不是发生在你所期望的游戏开始时。如果你试图为脚本组件定义一个构造函数,将妨碍 Unity 的正常运行,可能会引发严重问题。

    UnityScript 脚本与 C# 脚本稍有不同:

    1. #pragma strict
    2. function Start () {
    3. }
    4. function Update () {
    5. }

    在这里,Start 和 Update 函数具有相同的含义,但是没有显示地声明类。脚本本身就被认为是对类的定义;它将隐式地继承 MonoBehaviour,并且把脚本文件名作为类名。

    控制游戏对象

    如上所述,脚本只是组件的设计图,在脚本实例被附加到游戏对象之前,它的代码不会被激活。你可以拖动脚本文件到层级视图的某个游戏对象上,或者拖到到当前选中的游戏对象的检视视图中。在 Component 菜单下有一个 Scripts 子菜单,其中包含了当前项目中的所有有效脚步,包括你创建的脚本。脚本实例看起来就像检视视图中的其他组件一样。

    创建和使用脚本 - 图2

    绑定之后,当你按下 Play 按钮运行游戏时,脚本就开始工作。你可以在 Start 函数中添加下面的代码来验证这一点:

    1. // Use this for initialization
    2. void Start () {
    3. Debug.Log("I am alive!");
    4. }

    Debug.Log 是一个简单的命令,只是向 Unity 的控制台输出打印一条消息。现在,如果你按下 Play 按钮,你会在 Unity 编辑器窗口底部和 Console 窗口(菜单:Window > Console)看到这条消息。