脚本介绍

这是Unity3D入门教程中对C#脚本入门的介绍。

创建和使用脚本

GameObjects的行为,由组件控制附在他们身上的。虽然Unity的内置组件可以非常通用,但您很快就会发现您需要超越他们提供的功能来实现您自己的游戏功能。Unity允许您使用脚本创建自己的组件。这些允许您触发游戏事件,随时修改组件属性并以您喜欢的任何方式响应用户输入。

Unity本身支持C#编程语言。C#(发音为C-sharp)是一种类似于Java或C ++的行业标准语言。

除此之外,如果可以编译兼容的DLL,许多其他.NET语言可以与Unity一起使用 - 有关详细信息,请参阅此处。

学习编程艺术和使用这些特定语言超出了本介绍的范围。但是,有很多书籍,教程和其他资源可供学习如何使用Unity进行编程。有关详细信息,请参阅我们网站的“ 学习”部分。

创建脚本

与大多数其他资产不同,脚本通常直接在Unity中创建。您可以从“项目”面板左上角的“创建”菜单创建新脚本,也可以从主菜单中选择“ 资源”>“创建”>“C#脚本 ”。

将在“项目”面板中选择的任何文件夹中创建新脚本。将选择新脚本文件的名称,提示您输入新名称。

此时输入新脚本的名称而不是稍后编辑它是个好主意。您输入的名称将用于在文件中创建初始文本,如下所述。

脚本文件的剖析
双击Unity中的脚本资产时,将在文本编辑器中打开它。默认情况下,Unity将使用Visual Studio,但您可以从Unity的首选项中的“ 外部工具”面板中选择您喜欢的任何编辑器(转到Unity > 首选项)。

该文件的初始内容将如下所示:

using UnityEngine;
using System.Collections;

public class MainPlayer : MonoBehaviour {

// Use this for initialization
void Start () {

}

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

}
}

脚本通过实现一个派生自名为MonoBehaviour的内置类的类,与Unity的内部工作方式建立连接。您可以将类视为一种用于创建可附加到GameObjects的新Component类型的蓝图。每次将脚本组件附加到GameObject时,它都会创建蓝图定义的对象的新实例。类的名称取自您在创建文件时提供的名称。类名和文件名必须相同才能使脚本组件附加到GameObject。

然而,要注意的主要事项是在类中定义的两个函数。该update()方法的功能是把代码将处理游戏对象的帧更新的地方。这可能包括移动,触发动作和响应用户输入,基本上是在游戏过程中需要随时间处理的任何事情。要使Update功能能够正常工作,在任何游戏操作发生之前,能够设置变量,读取首选项以及与其他GameObject建立连接通常很有用。该启动功能将通过统一的游戏开始之前被调用(即,更新函数被调用前的第一次),并做初始化的理想场所。

有经验的程序员注意:您可能会对使用构造函数未完成对象的初始化感到惊讶。这是因为对象的构造由编辑器处理,并且不会像您期望的那样在游戏开始时发生。如果您尝试为脚本组件定义构造函数,它将干扰Unity的正常操作,并可能导致项目出现重大问题。

控制GameObject

如上所述,脚本仅定义组件的蓝图,因此在将脚本的实例附加到GameObject之前,不会激活其代码。您可以通过拖动脚本资源
来附加脚本层次结构面板中的GameObject或检查器当前选择的GameObject。“组件”菜单上还有一个“脚本”子菜单,其中包含项目中可用的所有脚本,包括您自己创建的脚本。脚本实例看起来很像Inspector
中的任何其他Component,:

连接后,当您按Play并运行游戏时,脚本将开始工作。您可以通过在“启动”功能中添加以下代码来检查: -

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

Debug.Log是一个简单的命令,它只是向Unity的控制台输出打印一条消息。如果按立即播放,您应该会在主Unity编辑器窗口和控制台窗口底部看到消息(菜单:窗口 > 常规 > 控制台
)。


  • 2018-03-19页面修订,编辑审查有限

  • 从2018.1开始,MonoDevelop被Visual Studio取代