
1.2 完成第一个Unity实例
任务要求
下面介绍如何使用Unity完成第一个项目,本项目的功能是在屏幕上显示字符串Hello,Unity!,并将项目发布为一个标准的Windows可执行程序,另外也会介绍Unity程序的调试方法。第一个Unity实例的最终运行效果,如图1-27所示。
通过完成任务:
● 掌握一个标准Windows可执行程序的实现步骤。
● 了解脚本在Unity项目中的作用,理解Unity项目的运行机制。
● 理解对象的生命周期,掌握生命周期中的一些重要函数。

图1-27 实例运行效果图
(资源文件路径:Unity 3D/2D移动开发实战教程\第1章\实例2)
1.2.1 编写程序
步骤1 创建一个新的项目
首先利用前面创建新项目的操作方法,创建一个新的项目,项目名称设置为HelloUnity。
步骤2 创建C#脚本文件
新建项目后,在Project面板中选择Assets文件夹,然后右击,在弹出的快捷菜单中选择Create→C# Script命令,创建一个新的C#脚本,将脚本命名为HelloUnity.cs,如图1-28所示。

图1-28 创建新的脚本文件
步骤3 输入代码
双击HelloUnity.cs脚本文件,系统默认会使用MonoDevelop脚本编辑器将其打开,此时可以看到里面已经被自动填充了一些基本代码。本项目的功能是在屏幕上显示字符串Hello,Unity!,因此修改代码如下:

【程序代码说明】
第6~7行:Start函数为一个初始化函数。
第8~9行:Update函数在每一帧都会被执行。
第10行:OnGUI函数专门用来绘制UI界面。
第12行:GUI.skin.label.fontSize=100;用于改变字体的大小。
第13行:GUI.Label (new Rect (100, Screen.height/3, Screen.width, Screen.height),"Hello,Unity!");为输出字符串,GUI.Label的第一个参数决定输出内容的位置和用于显示的矩形大小,第二个参数是输出内容。
步骤4 运行项目
(1)保存脚本文件并退出MonoDevelop脚本编辑器,回到Unity界面,在Hierarchy面板内选中Main Camera摄像机,在菜单栏选择Component→Scripts命令子菜单中的HelloUnity.cs文件,将脚本指定给摄像机,如图1-29所示。

图1-29 将脚本指定给摄像机
(2)选择Game面板,再单击播放按钮运行项目,即可看到Hello,Unity!字符显示在屏幕上,显示效果如图1-30所示。

图1-30 查看运行效果
步骤5 保存工程文件
在菜单栏选择File→Save Scene As…命令,将当前关卡(场景)保存在Assets文件夹内,命名为HelloUnity。可以看到,我们一共创建了两个文件,一个是脚本文件,另一个是关卡(场景)文件,如图1-31所示。

图1-31 脚本和场景文件
步骤6 编译生成标准Windows可执行程序
(1)确定前面保存的场景处于打开状态,在菜单栏选择File→Build Settings…命令,打开Build Settings对话框,单击Add Open Scenes按钮,将当前场景添加到Scenes In Build列表框中(也可以直接将场景文件拖入框中),如图1-32所示。只有将场景添加到Scenes In Build列表框中,它才能被集成到最后编译的游戏中。

图1-32 添加场景
(2)最后还需要进行很多设置,这里暂时只设置软件的名字。在Build Settings窗口单击Player Settings…按钮,在Inspector面板中将Product Name修改为HelloUnity,如图1-33所示。

图1-33 设置游戏名字
(3)接下来在Build Settings窗口中单击Build按钮,然后选择保存路径,即可将程序编译成独立运行的标准Windows程序,如图1-34所示。同时得到HelloUnity.exe的数据文件夹HelloUnity_Data。

图1-34 标准Windows程序
(4)双击打开HelloUnity.exe文件,显示如图1-35所示。勾选Windowed复选框,再单击Play!按钮,该程序将以窗口模式运行。

图1-35 运行标准Windows可执行程序
1.2.2 调试程序
在软件开发中出现错误是正常的,通过调试程序发现错误并进行修改是非常重要的。
步骤1 显示Log
在Unity编辑器主界面下方有一个Console面板,用于显示控制台信息,如果程序出现错误,这里会用红色的字体显示出错误的位置和原因,我们也可以利用在程序中添加输出到控制台的代码来显示一些调试结果:

把上面代码添加到OnGUI函数中,运行程序,当执行到Debug.Log代码时,在控制台中会对应显示出Hello,Unity!信息,如图1-36所示。

图1-36 显示调试信息
如果将Debug.Log替换为Debug.LogError,控制台的文字将呈红色显示。这些Log内容不仅会在Unity编辑器中出现,在将项目运行在手机上时,仍然可以通过工具实时查看。
在Console面板的右侧选择Open Editor Log选项,会打开编辑器的Log文档,一个比较实用的功能是,当项目创建完成后,在这个Log文档中会显示出项目的资源分配情况。
步骤2 设置断点
Unity自带的MonoDevelop脚本编辑器提供了断点调试功能,具体使用方法如下。
(1)使用MonoDevelop作为默认的脚本编辑器。首先把脚本编辑器指定为MonoDevelop。选择Edit菜单下的Preferences…命令,在打开的窗口中选择左边的External Tools选项,在右边的External Script Editor下拉菜单列表中选择MonoDevelop(built-in)选项。
(2)打开MonoDevelop编辑器,在需要设置断点的代码行按F9键设置断点。
(3)在MonoDevelop的菜单栏中选择Run→Attach to Process命令,选择Unity Editor选项作为调试对象,然后单击Attach按钮,如图1-37所示。

图1-37 选择Unity Editor作为调试对象
(4)在Unity编辑器中运行项目,当运行到断点时项目会自动暂停,这时可以在MonoDevelop脚本编辑器中查看调试信息,如图1-38所示。之后需要按F5键越过当前断点,才能继续执行后面的代码。

图1-38 利用断点调试