GameObjectsUnity场景中的基本对象,可以表示角色、道具、环境、摄像机、航标等。GameObject的功能由附加到其上的组件定义。 更多信息
在术语表中查看的行为由附加到它上面的组件控制。虽然Unity的内置组件非常通用,但很快你就会发现需要超越它们所能提供的功能来实现自己的游戏特性。Unity允许你使用脚本GameObject的功能组成部分。一个GameObject可以包含任意数量的组件。Unity有许多内置组件,你可以通过编写从MonoBehaviour派生的脚本来创建自己的组件。 更多信息
在术语表中查看来创建自己的组件。这些组件允许你触发游戏事件,随时间修改组件属性,并按你喜欢的方式响应用户输入。
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 NewBehaviourScript : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
}
脚本通过实现一个从内置类《strong>MonoBehaviour强》派生出来的类与Unity的内部机制建立连接。您可以将类视为创建可以附加到GameObject上的一种新组件类型的蓝图。每次将脚本组件附加到GameObject上时,就会创建由蓝图定义的对象的一个新实例。类的名称来自于您创建文件时提供的信息。类的名称和文件名必须相同,以使脚本组件能够附加到GameObject。
然而,需要注意的主要是类内部定义的两个函数。将用于处理GameObject帧更新的代码放置在Update函数中。这可能会包括移动、触发动作和对用户输入做出反应,基本上是在游戏过程中需要处理的任何需要随时间进行的事情。为了使Update函数能够执行其工作,通常很有用,在游戏动作发生之前,能够设置变量、读取首选项以及与其它GameObject建立连接。在游戏开始之前(即,在第一次调用Update函数之前),Unity会调用
给经验丰富的程序员的注意事项:您可能会惊讶,对象的初始化不是使用构造函数完成的。这是因为对象的构建由编辑器处理,并不像您预期的在游戏开始时进行。如果尝试为脚本组件定义构造函数,它将干扰Unity的正常运行,并可能导致项目出现重大问题。
如上所述,脚本仅定义了组件的蓝图,因此在其附加到GameObject之前,其中的任何代码都不会被激活。您可以通过将脚本资产拖放到层次结构面板中的GameObject或当前选中的GameObject的<盒>inspector(<盒>inspectorUnity窗口,显示有关当前选定的GameObject、资产或项目设置的信息,允许您检查和编辑值。 更多信息
见词汇表中来实现。在组件菜单上还有一个Scripts子菜单,其中包含项目中所有可用的脚本,包括您自己创建的脚本。脚本实例在外观上与Inspektor中的任何其他组件类似
一旦附加,脚本将在您按下Play并运行游戏时开始工作。您可以通过在Start函数中添加以下代码来检查这一点:
// Use this for initialization
void Start ()
{
Debug.Log("Hello world!");
}
Debug.Log是一个简单的命令,它只是在Unity的控制台输出中打印一条消息。如果您现在按下Play,您应该能在主Unity编辑器窗口底部和Console窗口中看到该消息(菜单:窗口 > 通用 > Console游戏控制台的首字母缩写
参考词汇表)。
2018–03–19 页面已修改
从2018.1版开始,MonoDevelop被Visual Studio取代