Unity3D ——强大的跨平台3D游戏开发工具教程


http://unity3d.9ria.com/?p=22
编程

众所周知,Unity3D是一个可以实现轻松创做的多平台的游戏开发工具,是一个全面整合的专业游戏引擎。在现有的版本中,其强大的游戏制做功能已经达到让人瞠目结舌的地步。尤为是它在3.0版本里面制做的那款第一人称战争游戏,画质效果丝绝不逊色于当下十分流行的《穿越火线》、《战地之王》等主流第一人称射击游戏。下图为Demo中的显示效果:
1.JPG服务器

看到如此绚丽的效果,让我立刻走进精彩的Unity3D世界吧!首先要下载Unity3D,在官网上就能够完成。
Unity3D的官方网站:http://unity3d.com
Unity3D的下载地址:http://unity3d.com/unity/download/
下载好以后,必需要到官方网站上注册一个邮箱,才能得到30天的试用时间。试用后若是您对这款软件满意,还能够在购买后继续使用。固然,若是您购买了Pro版本的Unity3D,将会得到更多的功能。
第一章Unity3D的基本界面介绍网络

 

Unity3D的基本界面很是简单,几个窗口就能够实现几乎所有的编辑功能。主界面如图1.1所示:
2.JPG

场景面板
:该面板为Unity3D的编辑面板;您能够将您全部的模型、灯光、以及其余材质对象拖放到当前场景中。构建游戏中所能呈现的景象。
动画面板:与场景面板不一样,该面板是用来渲染场景面板中的景象的。该面板不能用做编辑,但却能够呈现完整的动画效果。显示的内容取决于场景摄像机的设置。
层次清单栏:该面板主要功能是显示放在场景面板中的全部的物体对象。
项目文件栏:该面板主要功能是显示该项目文件中的全部资源列表。除了模型、材质、字体等,还包括该项目的各个场景文件。
对象属性栏:该面板栏会呈现出任何对象的固有属性,包括三维坐标、旋转量、缩放大小、脚本的变量和对象等等。
场景调整工具:能够改变您在编辑过程当中的场景视角、物体世界坐标和本地坐标的更换、物体的法线中心的位置,以及物体在场景中的坐标位置,缩放大小等等。编辑器

菜单栏:接下来我重点介绍一下菜单栏。ide

菜单栏中包含有八个菜单选项:分别是File【文件】、Edit【编辑】、Assets【资源】、GameObject【游戏对象】、Component【组件】、Terrain【地形】、Window【窗口】、Help【帮助】。函数

每一个菜单选项又有本身的子菜单,总结以下:工具

一、File【文件】布局

3.JPG

 

名称
说明
New Scene 建立新的场景。就像是游戏中的一个一个的场景同样,Unity3D为用户提供了方便的场景管理,用户能够为所欲为的建立出本身想要的场景。而后再把每一个场景连接起来组成一个完成的游戏。

Open Scene 打开一个已经建立的场景
Save Scene 保存当前场景
Save Scene as 当前场景另存为
New Project 新建一个新的项目工程。用户想要制做出本身的游戏,第一步就是建立一个属于这个游戏的工程,这个工程是全部元素的基础。有了工程以后,用户就能够在这个工程里面添加本身的场景。
Open Project 打开一个已经建立的工程
Save Project 保存当前项目
Build Setting 项目的编译设置。在编译设置选项里面,用户能够选择游戏所在的平台及对工程中的各个场景之间的管理。能够添加当前的场景加入到工程的编译队列当中。其中的Player Settings选项中能够设置程序的图标,分辨率,启动画面等。
Build & Run 编译并运行项目
Exit 退出Unity3D

 

二、Edit【编辑】学习

4.JPG

名称
说明
Undo 撤销上一步操做
Redo 重复上一步动做
Cut 剪切
Copy 复制
Paste 粘贴
Duplicate 复制并粘贴
Delete 删除
Frame Selected 选择一个物体后,使用此功能能够把视角调到观察这个选中的物体上
Find 在资源区能够按资源的名称来查找
Select All 能够选中全部资源
Preferences 选项设置。对Unity3D的一些基本设置,如:选用外部的脚本编辑,皮肤,各类颜色的设置。以及一些用户基本的快捷键的设置。
Play 编译并在Unity3D中运行程序
Pause 中止程序
Step 单步执行程序
Load Selection 载入所选
Save Selection 保存所选
Project Settings 项 目设置。其中包括输入设置,标签设置(对场景中的元素设置不一样类型的标签,方便场景的管理),音频设置,运行的时间的设置,用户设置,物理设置(包括重 力,弹力,摩擦力等),品质设置(这个比较重要,用户在这个选项里面能够设置工程默认的渲染品质),网络管理,编辑器管理等
Render Settings 渲染设置。若是以为总体画面的色彩质量不尽如人意,可在此处进行调节
Graphics Emulation 图形仿真。主要是配合一些图形加速器的处理
Network Emulation 网络仿真。能够选择相应的网络类型进行仿真
Project Settings 项目设置。其中包括输入设置,标签设置,音频设置,运行的时间的设置,用户设置,物理设置,品质设置,网络管理,编辑器管理等。
Snap Settings 临时环境,或理解为快照设置。

 

三、Assets【资源】
开发工具

5.JPG

名称
说明
Reimport 从新导入资源
Create 建立功能。能够用来建立各类脚本,动画,材质,字体,贴图,物理材质,GUI皮肤等
Show In Explorer 打开资源所在的目录位置
Open 打开选中文件
Delete 删除选中的资源文件
Import New Asset 导入新的资源
Refresh 刷新,用于导入资源包以后
Import Package 导入资源包。当建立项目工程的时候,有些资源包没有导入进来,在开发过程当中有须要使用,这时能够用到导入资源包的功能
Export Package 处处资源包
Select Dependencies 选择依赖项
Reimport 所有从新导入
Sync MonoDevelop Project 同步开发项目

 

四、GameObject【游戏对象】

6.JPG

名称
说明
Create Empty 建立一个空的游戏对象。能够对这个空的对象添加各类组件,即各类属性。在Component里面会讲到
Create Other 建立其余类型的游戏对象。这里面包括了不少内容,基本上囊括了Unity3D所支持的全部对象。其中有粒子系统,摄像机,界面文字,界面贴图,3D的文字效果,点光源,聚光灯,平行光,长方体,球,包囊,圆柱体,平面,表面,音频混音区域,树,玩偶,风域等
Center On Children 这个功能是做用在父节点上的,即把父节点的位置移动到子节点的中心位置
Make Parent 选中多个物体后,点击这个功能能够把选中的物体组成父子关系,其中在层级视图中最上面的那个为父节点,其余为这个节点的子节点
Apply Change To Prefab 应用变动为预置
Move To View 这个功能常常用到,把选中的物体移动到当前编辑视角的中心位置,这样就能够快速定位
Align With View 把选中的物体移动到当前编辑视角的中心位置,深度为0,即移动到和视角同一个平面上
Align View To Selected 把编辑视角移动到选中物体的中心位置


五、Component【组件】

7.JPG

名称

说明
Mesh 添加网格属性
Particles 粒子系统。可以造出很棒的流体效果
Physics 物理系统。可使物体带有对应的物理属性
Audio 音频。能够建立声音源和声音的听者
Rendering 渲染
Miscellaneous 杂项
Scripts 脚本。Unity内置的一些功能很强大的脚本
Camera-Control 摄像机控制


六、Terrain【地形】

8.JPG

名称
说明

Creat Terrain 建立地形
Import Heightmap-Raw 导入高度图
Export Heightmap-Raw 处处高度图
Set Resolution 设置分辨率
Create Lightmap 建立光影图
Mass Place Trees 批量种植树
Flatten Heightmap 展平高度图
Refresh Tree And Detail Prototypes 刷新树及预置细节


七、Window【窗口】

9.JPG

名称
说明
Next Window 下个窗口
Previous Window 前一个窗口
Layouts 布局
Scene 场景窗口
Game 游戏窗口
Inspector 检视窗口,主要指各个对象的属性,也可称为属性面板
Hierarchy 层次窗口
Project 工程窗口
Animation 动画窗口。用于建立时间动画的面板

Profiler 探查窗口
Asset Server 源服务器
Console 控制台


八、Help【帮助】

10.JPG

名称

说明
About Unity 关于Unity
Enter Serial Number 输入序列号
Unity Manual Unity手册
Reference Manual 参考手册
Scripting Manual 脚本手册
Unity Forum Unity论坛
Welcome Screen 欢迎窗口
Release Notes 发行说明
Report a Problem 问题反馈

第二章 Unity3D的简单预览
每一个Unity3D版本都会自带一个Demo源文件。在3.0的正式版中,自带的Demo就是网上展现的那款强大的射击游戏。在通常状况下,您只要第一次打开Unity3D v3.0就会看见自带的那个Demo项目文 件了。但若是Unity3D并无打开这个项目文件,你也能够在Unity3D里面的“File”菜单下点击“Open Project”选项,在“C:\Documents and Settings\All Users\Documents\Unity Projects”这个路径下找到项目文件夹“Bootcamp Demo”,选择并打开它。打开项目以后,在舞台场景面板中依然什么都没有显示的话,请在Project【项目文件栏】双击场景文件1.JPG 。稍等片刻以后,该舞台场景的全部对象就能够导入到舞台场景之中。导入成功以后效果如图2.1所示:
2.JPG

点击一下中间的播放按钮 3.JPG 作一下测试(若是您的机器配置不是很高,可能等待的时间会稍长)。稍等片刻,您就能够在Game【动画面板】中看到一个正在运行的射击游戏了。
在这个游戏场景中,您会看到比其余主流游戏还要细腻逼真的画面效果,例如各个物体的实时阴影。如图2.2所示:
4.JPG
固然若是您的机器配置较高,您还能够点击“Esc”键来将游戏画质进一步调高。调节界面如图2.3所示:
5.JPG
下面咱们来看下调整画面效果先后的游戏画面对比,如图2.4.1和图2.4.2所示:
6.JPG
7.JPG
咱们很明显的就能够感受到河水的效果以及场景阴影的效果都真实了许多。

第三章 在Unity3D中建立一个山势地形图
前面两章咱们比较细致的对Unity3D的界面和表现效果等进行了说明与讲解。相信不少朋友在看过Unity3D如此强大的画面效果后都已经按耐不住想要本身动手操做了,接下来咱们就尝试在Unity3D中建立一个山势地形图。
第一步:建立一个新项目。
打开Unity3D软件,它会自动载入上一次咱们打开过的“Bootcamp Demo”项目文件。不用管它,在软件打开以后点击 未命名.JPG ——>未命名2.JPG ,在弹出的8.JPG 对话框中找到未命名3.JPG 输入建立项目的文件夹地址,或者点击后面的9.JPG 选择一个文件夹地址(注:已建立Unity3D项目的文件夹,不能再看成新建立项目的文件夹来使用,不然会因没法找到文件而报错),而后在10.JPG 中选择要导入的项目文件包,每一个文件包都带有一些插件功能,因为咱们第一次建立项目文件,因此咱们将全部的复选框都打上勾。但这样会导致Unity3D在开始加载的时候速度偏慢,等之后咱们你们对各个插件包的做用都熟悉了,在建立Unity3D项目文件的时候,咱们只须要勾选须要使用到的插件包就能够了。选项面板如图3.1所示:
11.JPG

所有设置完成后,咱们点击 12.JPG 建立项目。
第二步:建立地形。
在建立一个新项目后,咱们会看见新项目的各个面板中,只有Project【项目文件栏】包含了 13.JPG14.JPG 两个文件夹,这两个文件夹里面装的就是在建立项目时导入项目文件包里的全部文件。除此以外,其余版面都是空空如也。不要着急,万丈高楼平地起,咱们立刻就利用文件包和系统功能来丰富各个版面的内容。首先咱们点击菜单栏上的15.JPG ——>16.JPG ,建立一个带有地形属性的平面,如图3.2所示:
17.JPG
第三步:添加摄像机。
建立好地形后,咱们会发现Game【动画面板】中依然没有任何画面。其实道理很简单,就像演唱会的实况直播同样。场景都搭建好了,演员也在舞台上表演,却没有架上摄像机,电视机前的观众怎么可以看到现场的画面呢?
接下来咱们就建立一个摄像机。点击 20.JPG ——>18.JPG ——>19.JPG ,这样场景中就会建立一个摄像机,这是您就能够在Game【动画面板】中观看到摄像机所观察到的星象了。如图3.3所示:

21.JPG
第四步:调整地形大小。
系统建立的地形默认大小是2000*2000的面积,实际编辑的时候会显得很大,不方便操做,因此咱们对建立的地形面积进行调整,以便咱们后续的编辑。
点击菜单栏上的 78.JPG ——>22.JPG ,弹出23.JPG 面板来调节地面的大小。将24.JPG 后面的数字改为500.而后将25.JPG 后面的数字也改为500,设置好以后点击26.JPG 按钮将原来的地形改为500*500大小的面积。
第五步:给场景编辑材质。
在场景面板中选中刚才建立的地面对象 27.JPG ,若是您以为场景中不是很方便选择所须要的对象,那么您还能够在Hierarchy【层次清单栏】选中您所需的对象,该栏中包含了全部场景面板中的物体对象。选中地面对象79.JPG 以后,咱们会在Inspector【属性面板】中立刻发现与之对应的属性,包含有:Position【坐标】、Rotation【旋转量】、Scale【缩放尺寸】,以及地面对象固有的28.JPG29.JPG 。如图3.4所示:

30.JPG
其中 31.JPG 这个像画笔同样的按钮,是用来改变地面材质的。咱们点击它以后,能够在下面找到32.JPG 按钮,点击——>33.JPG 来到34.JPG 界面,如图3.5所示:
35.JPG
而后咱们单击 36.JPG 后面的圆圈,就能够为地面添加您所喜欢的材质了。选好以后点击37.JPG 按钮来填入新材质。添加材质以后的地面如图3.6所示:

38.JPG
若是您以为这个地形的材质过于简单,那么您能够继续点击 39.JPG ——>40.JPG ,来添加第二个材质,而后在41.JPG 中选择您想要的笔刷形状,如图3.7所示:
42.JPG
接着就能够在场景面板中刷出新材质的区域范围了。如图3.8所示:
43.JPG
第六步:制做山峰。
完成了地面材质的制做,接下来就能够制做山峰了。
点击 44.JPG 这三个按钮其中的一个,选择合适的笔刷,在地形图中能够刷出高山的形状,如图3.9所示:
45.JPG
若是以为如今刷出来的山峰过高了,活着以为某处的山有些多余,能够按住Shift键不放,用刚才选择的笔刷进行反向平刷便可。
第七步:种植草和树木。
接下来就能够给地形种植一些草和树木了。具体的种草按钮是 46.JPG ,种树的按钮是47.JPG 。草和树木的设置方法与地形材质的设置方法十分雷同,都是先点击48.JPG 按钮来添加您所须要的花草和树木,而后在场景面板中刷出您所须要的区域便可。如图3.10所示:

49.JPG
这里你们须要注意一点,Unity3D在编辑模式下为了节约资源,采起了资源剔除的方法。若是您在利用笔刷“种草”的过程当中,没有看到您所“种”上去的草,这是您只需将画面拉近便可观察到草的效果了。如图3.11所示:
50.JPG
第八步:设置地形上的风速、阴影效果。
种上了草和树木,若是在游戏中运行时静止不动,会让人感受很不天然,因此咱们在地形中添加上风和阴影的效果,让草随风摆动,这样会变得更加逼真。
点击 80.JPG 按钮,来设置地形上的风速、阴影等效果。如图3.12所示:
52.JPG
第九步:添加光照效果。
地形相关的全部效果已经设置完毕了,可是咱们发如今Game【动画面板】中的画面很暗,这是因为没有加入灯光的缘故。
点击 53.JPG ——>54.JPG ——>69.JPG ,来建立一个太阳光效果。如图3.13所示:
56.JPG

太阳光和太阳自身的位置关系并不大,只与自身的角度有关,这一点和咱们平常生活中的太阳光是一致的。因此为了让场景变得更亮,咱们就须要用到场景调整工具中的旋转按钮57.JPG 来对太阳光进行旋转。固然您也能够在属性面板中对它进行调节。根据咱们生活的常识,当太阳光直射地面的时候,光线最强。调整以后的效果如图3.14所示:
58.JPG
怎么样,这时的Game【动画面板】中的画面是否是亮了许多?
第十步:摄像机观察设置。
为了让摄像机全方位的观察咱们刚才所建立的场景,您能够在Project【项目文件栏】中找到 59.JPG60.JPG61.JPG 这三个脚本文件,并将它们依次拖放到场景中的摄像机上面。如图3.15所示:
62.JPG
若是您以为在Project【项目文件栏】中的文件过多,不便于寻找,您还能够在Project【项目文件栏】上方的搜索框输入他们的名字来进行搜索。这 样很快就能找到对应的文件了。放置完成后,点击测试按钮,您就能够身临其境的在您刚才建立的Game【动画面板】中进行漫游了。用鼠标控制视角,用键盘的方向键控制行走。在漫游的过程当中,您能够清晰的看到刚才建立的草随微风轻轻摆动。效果如图3.16所示:
63.JPG
第十一步:添加天空效果。
这时咱们从Game【动画面板】中看到的天空是没有任何效果的,接下来咱们给场景添加一个天空盒,使场景具备蓝天的效果。
选中场景中的摄像机对象,而后点选菜单栏中的 64.JPG ——>65.JPG ——>66.JPG ,为摄像机添加一个天空盒。添加成功以后,咱们就可以在摄像机的属性面板中找到刚才添加的天空盒了。
接着咱们去Project【项目文件栏】找到“Standard Assets”文件夹下的“Skyboxes”文件夹。这里面摆放了许多关于天空的材质球,您只须要选中一个您喜欢的天空材质球,并拖放给摄像机离的天空 盒【Skybox】的材质属性【Custom Skybox】,就可让场景的天空布满这种材质效果。如图3.17和图3.18所示:

67.JPG

68.JPG
选中场景中的光照对象,而后在他的属性面板中找到“Flare”,并点选它后面的圆圈 70.JPG 。在它弹出的71.JPG 对话框中选中双击72.JPG 这种光照效果,这样就可使得您在动画模式中清楚的看见太阳所在的位置。再运行一下动画,看看效果。
第十二步:添加光照阴影效果。
细心的朋友必定会发现,如今场景中的树木等物体是没有阴影的,这很不天然。因此为了让场景更加的逼真,咱们还能够为场景添加光照阴影效果。
具体作法以下:选中光照对象,在它的属性面板中找到 74.JPG ,它默认的是75.JPG (没有阴影),您能够将它改为“Soft Shadows”【软渲染阴影】或者是“Hard Shadows”【硬件渲染阴影】。“Soft Shadows”【软渲染阴影】以消耗CPU的计算为代价来产生阴影效果,这种模式运行速度较慢,但对于机器配置比较落后的使用者是惟一的选择。 “Hard Shadows”【硬件渲染阴影】可利用新一代GPU的显卡加速功能来为游戏进行阴影效果的渲染处理,其运行速度比较快,渲染效果也比较理想。但不管您选 择哪个选项,动画场景的物体都会相对于阳光长生阴影效果。如图3.19所示:
76.JPG
第十三步:保存项目。
全部的场景效果已经调试完毕后,按下Ctrl+S来保存场景文件,取名叫作“text”以便往后调用。若是保存成功,您会在您项目的Project【项目文件栏】中看到一个这样的文件  


第四章 为地形添加水源、水流以及水下的模糊效果
制做好了地形的各类效果,接下来咱们给场景添加一些水效果,使场景更加丰富。
第一步:添加水面
因为我在上一次的地形创做中就已经在山峰之间制做了一块洼地,它就能够做为一个放置湖水的地方。若是您上次的创做并无这样的地形,那么请您从新建立一个山势地形图,就看成本身的一次练习吧。
在场景面板中点击Y方向的绿色箭头 1.JPG ,切换到顶视图,这样能够便于咱们很快的找到洼地所在的地方。如图4.1所示:
2.JPG
图4.1
而后用鼠标滚轮迅速的推动观测距离。如图4.2所示:
3.JPG
图4.2
接着再到Project【项目文件栏】找到“Standard Assets”文件夹下的 4.JPG (仅限专业版使用,若是您使用的版本是非专业版本,请转到5.JPG )文件夹中,拖拽一个6.JPG 【白天光照效果的水模型】到洼地的中央,并利用场景调整工具中的缩放工具7.JPG ,将水模型调整到合适的大小。如图4.3所示:

8.JPG
图4.3
紧接着咱们再点击场景面板中右上角的白色小方块 9.JPG ,将视角切换到透视图。而后利用场景调整工具10.JPG ,将水模型调整到合适的高度。如图4.4所示:
11.JPG
图4.4
这时您只须要在播放时,将摄像机移动到洼地这个地方就能够看见湖水的效果了。
第二步:添加瀑布。
如今看来效果略显单调,既然是山中泉水咱们还得有一些瀑布和溅起的水花。为了节约查找的时间,咱们直接在Project【项目文件栏】上方的搜索框输入字符“water f”,这样就能够查处如图所示的材质和模型。如图4.5所示:
12.JPG
图4.5
在这里面, 13.JPG 是一个喷泉模型,14.JPG 是一个水面的飞溅模型,15.JPG 是一个瀑布模型。咱们先拖入一个16.JPG 到洼地,而后利用场景调整工具来调整它的位置和角度。如图4.6所示:

17.JPG
图4.6
这时的瀑布略显小了一些,咱们能够先选中它,而后到它的属性面板里面去调整成您想要的效果。如图4.7所示:
18.JPG
图4.7
第三步:添加水面飞溅模型。
接下来咱们会看到瀑布落到水面是没有水花飞溅的效果的,这不合常理。因而咱们在瀑布下的水面上方放置一个水面飞溅模型 19.JPG 。因为它的噶偶必定要和水面高度一致,因此咱们先点选水平面,看看它的Y轴坐标,而后复制到20.JPG 属性面板中一样的位置,以确保它是伏在水面上的。紧接着再到它的属性面板中调整它的属性,让模型效果调整成您想要获得的效果。如图4.8所示:
21.JPG
图4.8
第四步:添加水下模糊效果。
咱们运行一下游戏 ,而后将镜头移动到泉水的水面下。如图4.9所示:
23.JPG
图4.9
你们会发现,水下的视觉和在地面上的视觉效果是彻底同样的。这和咱们平时的生活现状是不相符的,因此咱们还得作一下相应的调整。首先点击 24.JPG ——>25.JPG ——>26.JPG ,建立一个立方体,并运用场景调整工具将它调整到整个水洼的实体部分。(注:运用其余形体也能够,其主要是用来覆盖水洼的实体部分,以用来和摄像机作碰撞检测,让摄像机的镜头变得模糊。)如图4.10所示:

123.JPG
图4.10
接着,确保您建立的这个cube是被选中状态,到它的属性面板中,将“Box Collider”卷展栏中的“Is Trigger”复选框打上勾(若是这里不打勾,这个cube将做为一个实物,当摄像机撞上它时,就像撞上墙同样,没法穿过。)如图4.11所示:
28.JPG
图4.11
而后再将“Mesh Renderer”卷展栏下的全部复选框所有勾掉,使这个立方体只做为一个形体存在,而不让它在场景中做出任何的显示渲染。如图4.12所示:
29.JPG
图4.12
接着在属性面板的最上方将它的名字由“Cube”改成“WaterColler” 30.JPG ,再选中31.JPG 的下拉框 中新添加一个“WaterColler”的标签分类。而后将这个“WaterColler”水洼碰撞体的Tag也改为“WaterColler”。
而后咱们在菜单栏中选中 32.JPG ——>33.JPG ——>34.JPG ,新添加一个JS脚本。到Project【项目文件栏】找到刚才新建的JS脚本35.JPG ,按下F2键更改它的名字为“UnderWatereffect”,并双击编辑它,输入代码如图4.13所示:

36.JPG
图4.13
输入完毕,按Ctrl+S保存代码并关闭退出。而后将代码拖拽给摄像机使用。从新运行一下游戏,将摄像机移动到水下,就能够看到一片模糊的景象了。如图4.14所示:
37.JPG
图4.14
第五章 Unity3D中脚本的简单概述
和其余的3D软件同样,Unity3D做为一个类播放器的3D集成软件,具备良好的时间层级关系。好比Start()里面的语言,老是在播放器初始化时执行一次,然后就再也不执行。例以下面用JS写的一个例子。在菜单栏上选中38.JPG ——>39.JPG ——>40.JPG ,将下面这段代码拖拽给Hierarchy【层次清单栏】中任意一个对象。
41.JPG
您就会在播放器刚开始播放的时候,在左下角的控制台面板中看到 42.JPG 这句话,证实您的Game播放器已经开始工做了。如图5.1所示:

43.JPG
图5.1
(注:这个控制台买那般之后在你们使用的时候会常常用到它,由于它能够用做您代码片断的调试,以及您程序出错了的提示框,详细的提示您出错的缘由所在。)
固然有了初始化函数,就必定会有刷帧函数Update(),该函数内全部的代码会在播放器每播放一帧时执行。例以下面用JS写的一个例子,在菜单栏上选中 未命名.JPG ——>未命名2.JPG ——>未命名3.JPG ,输入以下代码:
44.JPG
该代码会在播放器每播放一帧的时候,显示游戏开始到如今所消耗的时间值。
Unity3D中有着很是强大的接口处理功能,您能够在代码中为对象制定任意一个空接口用于和对应类型的对象进行交互,例以下面用JS写的一个例子,在菜单栏上选中 未命名.JPG ——>未命名2.JPG ——>未命名3.JPG ,输入以下代码:

45.JPG
该代码为对象添加了一个在Z轴方向上的初始速度,若是在没有其余外力的做用下,物体将一直沿着Z轴方向以5的速度运动。而且当您将这段代码拖拽给一个物体对象后,它的这个初始速度能够做为一个接口在它的属性面板中进行修改。如图5.2所示:
46.JPG
图5.2
除了数字做为接口外,接口还能够是对象,例以下面用JS写的一个例子,在菜单栏上选中 未命名.JPG ——>未命名2.JPG ——>未命名3.JPG ,输入以下代码:
47.JPG
您能够将这段代码拖拽给Hierarchy【层次清单栏】中任意一个对象,由于它在这里定义了一个Transform类接口对象cubeGO,因此它几乎与拖拽的对象无关。拖拽成功以后来到该物体的属性面板中,您能够看到这样一个属性卷展栏48.JPG ,cubeGO的后面有个很明显未定义对象填写栏49.JPG ,而后咱们把想要使之运动的物体拖拽到这个上面来,当咱们运行游戏时,只要按下“G”键就能够看到被拖拽的物体做为“cubeGO”的指代对象,朝着Z轴方向运动了。


第六章 Unity3D中的C#Script编程的注意事项
也许您在学习Unity3D以前,已是一位C#的编程高手了。但在Unity3D中的C#并不像真正的C#那般强大,在Unity3D的C#中必须所有继承自MonoBehaviour。下面为一段C#Script的完整代码:
1.JPG
除此以外它不支持空间命名,但官方说他们颇有可能会在之后的版本中支持这一功能。
在Unity3D中,JavaScript和C#Script的编程效果近乎同样。只是为了避免同程序爱好者设立了不一样的编程模式。而且JavaScript所编写的代码对象能够和C#Script编写的代码对象交叉使用,并不发生任何冲突。

第七章 修改MonoDevelop编辑器为Unity3D的默认编辑器
一般状况下Unity3D默认的编辑器都是“UniSciTE”,它用起来十分轻巧快捷,就像记事本同样。
但若是要开发一些大型的项目, 显然“UniSciTE”简单的功能就不足以支撑它的工做了。但若是您每次在编辑脚本的时候,都去用“MonoDevelop”一个个的打开,又会显得很 麻烦。因此咱们就要在Unity3D中作一些设置,让“MonoDevelop”成为默认的脚本编辑器。具体的步骤是:在菜单栏中找到2.JPG ——>3.JPG ,在弹出的未命名.JPG 对话框中找到4.JPG 并将它后面的下拉框选中为5.JPG ,浏览到咱们“MonoDevelop”可执行文件存放的地方。这个路径通常都和您的Unity3D文件夹在一块儿。
设置好以后,从新再Unity3D中点选脚本文件,就会发现已经能用“MonoDevelop”软件打开了,但一次打开的时候会稍显慢一点,由于“MonoDevelop”须要加载不少东西。
固然,若是您是一个C#和Visual Studio忠实的编程爱好者,您也能够用一样的方法来设置Visual Studio软件的路径,让Visual Studio成为您Unity3D脚本的默认编辑器。

第八章 向Unity3D中导入外部模型
Unity3D支持多种外部导入的模型格式,但它并非对每一种外部模型的属性都支持。具体的支持参数,您能够对照以下列表:

种类
网络
材质
动画
骨骼
Maya的.mb和.mal格式




3D Studio Max的.maxl格式




Cheetah 3D的.jasl格式




Cinema 4D的.c4dl 2格式




Blender的.blendl格式




Carraral



COLLADA

 


Lightwavel



Autodesk FBX的.dae格式




XSI 5的.xl格式

 




SketchUp Prol



Wings 3Dl



3D Studio的.3ds格式

 





Wavefront的.obj格式

 

Drawing InterchangeFiles的.dxf格式



 

在下面的实例中,咱们利用3D MAX来制做一个完整的动画,并导出FBX的格式给Unity3D使用。
第一步:建立新的工程文件。
建立一个名为“Turret”的项目文件夹。而后打开Unity3D软件,选择 6.JPG ——>7.JPG ,建立一个新工程项目,在项目路径中点击8.JPG 找到咱们刚才建立的“Turret”文件夹,并点选咱们须要导入的包文件,而后点击9.JPG 来建立一个新的工程文件。须要注意的是,以上步骤千万不能乱,由于Unity3D是没法以非空的文件夹做为工程文件夹来建立项目的。
在此为了节省时间,笔者直接使用刚才建立好的场景来进行示范。
第二步:制做一个炮塔模型。
打开3D MAX软件制做一个炮塔模型,并将制做好的模型保存在“Assets”【资源】文件夹下面。3D MAX中的模型样图如图8.1所示:
10.JPG
图8.1
第三步:将炮塔模型放入场景。
从新来到Unity3D的软件环境中,这时你们已经能在Project【项目文件栏】看到咱们刚才用3D MAX导出的模型文件和材质贴图文件了。接着咱们在地形场景中找到一个合适的位置,将咱们的炮塔拖拽进去。如图8.2所示:
11.JPG

图8.2
可是咱们发现,这样彷佛过小了一点。在改变外部模型尺寸的时候,有一个技巧,您没必要在场景中修改它。儿科一道该模型的属性面板中去修改它的“Scale Factor”大小。如图8.3所示:
12.JPG
图8.3
它的默认值都是0.01,咱们在这里将它改成0.1,并在属性面板的最下方找到 13.JPG 按钮,点击它让模型尺寸在Unity3D中获得改变。如图8.4所示:
14.JPG
图8.4
怎么样,咱们的炮台是否是雄壮了许多?可是,咱们并不赞同这样的模型导入方法。由于根据官方的说法,他们建议您将作好的模型导出成为FBX格式的模型文件 给Unity3D使用。也许这样会使模型在Unity3D中的运行速度得以提升吧。因此说咱们仍是回到3D MAX的软件环境下面,将模型导出。
第四步:将炮塔模型导出。
在3D MAX中,点击File【文件】——>Export【导出】,将模型文件导出为FBX文件,保存到咱们建立的文件夹中的“Assets”【资源】文 件夹下面。注意一下弹出的“FBX Export”面板,这里包含了模型动画、骨骼工具、材质等等一系列的导出设置。若是您没有在模型中添加这些东西,就须要将没必要要的复选框勾选掉。
第五步:将炮塔模型再次放置到场景中。
回到Unity3D的软件环境,在Hierarchy【层次清单栏】中选中原先的炮塔模型,按下“Delete”键将其删除。而后在Project【项目 文件栏】中找到刚刚导入的FBX模型,点击选中,用前面修改模型尺寸的方法来修改FBX模型的尺寸。而后将其放置在场景中合适的位置上。因而从3D MAX中导出的模型就顺利的导入到Unity3D的场景中了。


第九章 图形用户界面类G.U.I
您在玩不少3D游戏的时候,不知是否注意到在游戏界面中,总有一些图形和文字信息是不随着3D视角的改变而改变的。这也是因为游戏自己的要求而决定的。好比说英雄的生命值,聊天窗口的文字信息等等。这些不被改变的内容就被称做G.U.I。
下面咱们一块儿在Unity3D中简单作两个G.U.I实例,来讲明它的用法。咱们在现有场景的基础上制做一个炮弹发射的游戏。想一想一个炮弹发射的游戏都需 要那些元素?是否是应该在画面的一个角落显示炮弹填发的状况?就像大多数3D游戏那样,您的魔法值在使用后须要必定的回复时间。接下来咱们制做一个弹药装 填的效果。
第一步:制做弹药装填图案。
用PhotoShop制做弹药的装填时间图示,并将它们所有保存为PNG格式文件到工程项目的“Assets”【资源】文件夹内。弹药装填图示如图9.1所示:
1.JPG
图9.1
第二步:导入图案。
回到Unity3D软件环境中,为了方便归类,咱们在Project【项目文件栏】中右键——>“Create”——>“Folder”新建一个文件夹,并按F2将其改名为“ShortTime”,再将导入的五张图片拖入文件夹内。如图9.2所示:
2.JPG
图9.2
第三步:建立图标。
在菜单栏中选中 3.JPG ——>4.JPG ——>4.JPG ,建立一个G.U.I图标,这是你们会在Scene【场景面板】中看到一个默认Unity3D的图标,如图9.3所示:

4.JPG
图9.3
在Hierarchy【层次清单栏】选中它以后,来到它的属性面板中,点击Texture后面的 5.JPG 来改变它的图标为咱们刚导入的弹药装填图标。再经过属性面板中其余属性值的更改,获得图标最终的显示大小和显示位置,如图9.4所示:
5.JPG
图9.4
第四步:建立文字说明。
在菜单栏中选中 6.JPG ——>6.JPG ——>7.JPG ,建立一个G.U.I文字在图标的旁边座位说明。其文字输入、文字大小、文字样式等等也一样在它的属性面板中调节。如图9.5所示:
7.JPG
图9.5

第十章 让Unity3D支持中文字体

在上一章里面,咱们一块儿学习了 G.U.I图形和文字的使用方法。可是细心一点的朋友可能会发现,在“GUI Text”中输入中文是没有任何效果的。这是因为如今Unity3D还不支持中文的缘故。可是,这并不影响咱们对中文做品的开发。Unity3D中能够将 任意的字体做为材质文件赋予“GUI Text”,其中就包括中文字体。
具体作法以下:
第一步:将您须要的中文字体拷贝到项目文件中的“Assets”【资源】文件夹内。
第二步:在菜单栏中选中 8.JPG ——>8.JPG ——>9.JPG ,建立一个G.U.I文字,而后在它的属性面板中找到“Font”点选它后面的10.JPG ,将它的字体类型给为您刚才拷贝进来的那个字体,接着在属性面板中找到“Text”后面的输入框输入您想要输入的中文内容。观察场景面板,获得如图10.1所示效果:
10.JPG
图10.1



第十一章 制做炮台的旋转
你们知道,炮台须要向四周不一样的角度发射炮弹,这就须要咱们将炮台设置成为会旋转的物体,接下来咱们就一块儿制做一个会旋转的炮台。
第一步:给炮台的炮筒添加旋转函数。
给炮台的炮筒部分添加一个旋转函数,使得炮台随着鼠标在X方向上的移动而移动。在Project【项目文件栏】中右键——> 1.JPG ——>2.JPG 新建一个JS函数,并按F2将其改名为“TurretRotate”,而后输入以下代码。
3.JPG
点选场景面板中的炮塔,找到炮塔上半部分所对应的对象,如图11.1所示:
4.JPG
图11.1
接着将刚才的 5.JPG 文件拖拽给这个对象。
第二步:设置摄像机跟随。
选中摄像机对象“Camera”,点选菜单栏中的 6.JPG ——>7.JPG ——>8.JPG ,为摄像机添加一个平滑的跟随代码,但这里并无设置跟随对象。
继续选中摄像机对象,在它的属性面板中找到“Smooth Follow(Script)”卷展栏下的“Target”,而后将炮台上半身对象拖拽给它。如图11.2所示:9.JPG

图11.2
第三步:运行游戏,观察效果。
点击测试按钮 10.JPG ,试着移动下鼠标看看炮塔的旋转效果。如图11.3所示:
11.JPG
图11.3
摄像机随着炮塔的旋转而旋转,而G.U.I图标和G.U.I文字一直在画面的左上角不动,效果很不错。
注:这里须要注意的问题一个是摄像机的动做容易发生冲突,因此在设置的时候,须要注意将不使用的摄像机动做关闭。还有一点是模型制做完成导出的时候,须要注意将模型的坐标轴设置好,不然在脚本执行的时候,会出现摄像机不能与炮口方向一致的状况。

第十二章 制做炮弹的射击和爆炸效果
制做完了炮台的旋转,接下来咱们继续制做炮弹相关的效果。
第一步:建立炮弹。
点击菜单栏的 12.JPG ——>13.JPG ——>14.JPG ,建立一个球体模型,并利用场景调整工具将其调整到和炮口差很少的大小。如图12.1所示:
15.JPG

图12.1
第二步:给炮弹添加贴图。
找两张金属材质的贴图,第一张为基本RGB贴图,第二张为普通显示的贴图,如图12.2所示:
16.JPG
图12.2
这样作是为了一会在给物体赋予材质时,让它有立体的感受。您也能够只给物体照一张贴图材质。找到想要的材质贴图以后,将它们拷贝到项目文件夹中的“Assets”【资源】文件夹内。
接下来选中刚才的球体模型,在它的属性面板中找到材质球下拉选项框。将他的渲染模式改成“Bumped Diffuse”,紧接着将深色的材质贴图拖放给第一个材质框,将浅色的材质贴图拖放给第二个材质框。如图12.3所示:
17.JPG
图12.3
因而咱们就会获得一个带有材质效果的炮弹了。
第三步:设置炮弹的发射效果。
在菜单栏中点选 18.JPG ——>19.JPG ——>20.JPG ,建立一个预制类对象,并按下F2键将它的名字改成“Shot”,而后将球体模型拖入到预制对象中,并剔除场景面板中的炮弹模型。
可是这时的球体模型仅仅是在外观上有了炮弹的样子,咱们还得让它具备炮弹同样的物体特性。接着在菜单栏中点选 21.JPG ——>22.JPG ——>23.JPG ,为炮弹添加一个刚体属性。
第四步:设置炮弹的发射起点。
在菜单栏中点选 24.JPG ——>25.JPG ,建立一个空对象放置在炮口,做为一会炮弹发射的起始点。按下F2将其改名为“FirePoint“。而后在Hierarchy【层次清单栏】中,把“FirePoint“拖拽到炮塔上半部分的旋转对象中去,这样可使得它和炮塔一块儿旋转。
第五步:为炮弹建立发射函数。
在Project【项目文件栏】中右键——> 26.JPG ——>27.JPG 新建一个JS函数,并按F2将其改名为“Open Fire”,而后输入以下代码。

28.JPG
输入完毕以后,将该代码拖拽给Hierarchy【层次清单栏】中的发射对象“FirePoint“,而后咱们会发如今属性面板中的“FirePoint “接口和”Bullet“接口对象为空。因此咱们必须得把发射点对象“FirePoint“和炮弹对象”Shot“拖拽到两个对应的接口上。如图12.4 所示:
29.JPG
图12.4
第六步:添加火花效果。
接下来咱们按下测试按钮 30.JPG 看看效果。你们会发现朝前发射的炮弹再碰到山体后,都被弹了起来。因此说此时咱们制做的炮弹还只是一个球体,并不会爆炸。接下来咱们还要继续做出炮弹的爆炸效果。
在Project【项目文件栏】的查找框中输入“Fireworks“关键字,将查找到的 31.JPG 拖拽到场景面板,您会看到一个动态的实时爆炸火花。如图12.5所示:
32.JPG
图12.5
接着确保该对象为选中状态,到它的属性面板中调节它的各个属性值,直到达到您想要的效果为止。如图12.6所示:
33.JPG
图12.6
接下来在菜单栏中点选 34.JPG ——>35.JPG ——>36.JPG ,建立一个预制类对象,并按下F2键将它的名字改成“BoomPrefab”,而后将这个爆炸火花拖拽到预制对象中去,并删除场景面板中的火花。
第七步:为炮弹建立爆炸效果。
添加一段JavaScript代码,取名叫作“Boom“,这段代码的主要做用是给炮弹添加一个碰撞检测。若是炮弹碰撞到任何物体,就让炮弹在场景中消失,并在炮弹碰撞消失的地点加载爆炸火花的预制对象。具体代码以下:

37.JPG
输入完毕以后保存该代码,并把这段代码拖拽给炮弹预制对象“Shot“。而后点选预制对象”Shot“,在它的属性面板中找到刚才拖拽给它的”Boom “卷展栏,再将爆炸火花预制对象”BoomPrefab“拖拽给它的接口”BoomFire“。运行游戏,看一下效果。如图12.7所示:
38.JPG
图12.7
第八步:设置爆炸效果的消失。
刚才一系列的设置以后,你们已经可以很明显的看到爆炸以后的火花效果,但它会一直在那里闪烁,并不会消失。这严重违背了现实生活的景象,因此咱们还得为它加上一段时间限定消失代码。
继续建立JavaScript代码,改名为“desBoom“,具体代码见下:
39.JPG
输入完毕以后,将这段代码拖拽给爆炸火花预制对象“BoomPrefab“。再次运行程序,咱们会发现火花在爆炸产生2秒后就自动消失了。
第九步:为爆炸效果添加音效。
完成了画面效果的制做,咱们还须要给游戏添加上很是重要的一个元素——声音。其实这个过程很是简单,只须要在网络上搜寻一个您认为合适的声音,并将这段声 音文件添加入项目文件夹的“Assets“【资源】文件夹内。而后在Project【项目文件栏】中,将其拖拽给爆炸火花的预制对象 “BoomPrefab“,这样声音文件就能够和爆炸火花同时产生了。
若是您以为声音须要作适当的调节,例如“是否在预制对象产生时播放?“,”声音是否循环播放“等这些问题。咱们均可以在选中预制对象后,在它的属性面板中找到声音的调节卷展栏,对它一一进行调节。

以上就是这款强大的跨平台3D游戏开发工具Unity3D的基础入门教程了。相信你们看过以后多加练习,必定可以制做出很是优秀的3D游戏,也但愿个人教程可以帮助你们较快的上手Unity3D,谢谢!


天地会Unity3D讨论群:

1群:175283762(已满)
2群:120543899