Skip to main content
 首页 » AR资讯

unity4.x从入门到精通、Unity 5.x游戏开发指南读书摘要

2016年09月09日 21:07:14872850
Unity对某些虚拟现实设备提供了内置支持。
Unity从5.3版本开始专注于虚拟现实Oculus家族设备,特别是Oculus Rift Development Kit 2(DK2)和消费版Gear VR。
Unity5.3版本不再支持note4。
Unity从5.3开始内置了VR接口。
需要安装Oculus runtime 0.8 installed。下载地址www.vrzhinan.com
配置Unity支持VR
打开Edit|Project Settings|Player|Other Settings|Rendering
在监视面板中勾选Other Setting中的Virtual Reality Supported
using UnityEngine;
using UnityEngine.VR;//VR包
public class ToggleVR:MonoBehaviour
{
private void Update(){
//当键盘按下V,则切换到VR状态
if(Input.GetKeyDown(KeyCode.V)){
VRSettings.enabled=|VRSettings.enabled;
}
}
}
当勾选了Virtual Reality Supported后,并且DK2已经连接到电脑,在Unity中运行程序的时候,程序就会在DK2中显示啦。
自从Unity5.3版本不支持VR后,并不需要为了VR创建两个摄像机了。并且Unity会自动为场景中资源进行VR优化。比如遮挡剔除、阴影渲染、纹理渲染等。
VR最先让人头痛的就是眩晕,所以设备的频率一定要配置正确。
DK2必须配置成75fps。Gear VR必须是60fps。
屏幕分辨率也是一定要达到要求才行的。
对于DK2设备的分辨率为1920*1080大小的75fps。若是商用的Oculus Rift(CV1)则分辨率为2130*1200,大小90fps。
20160225添加:
星球项目换新的UI,选角色界面模型换回图片
4个角色,每个角色有待机、响应、选中3种状态。
用Text代替TextMesh显示龙币、积分
用Image代替Sprite显示龙币积分底图
第一个场景的层级管理:
1、层次视图中选中TipInfoCamera
Layer选择TipInfo
Culling Mask选中TipInfo,不要选中Default、UI、Role
在Camera Preview可以看到这个摄像机仅仅照射TipInfo。
Roles节点下有Role1、Role2、Role3、Role4四个节点
Role1下TipInfo节点的Layer选择TipInfo
弹出一个框Change Layer
Do you want to set layer to TipInfo for all child objects as well?
【Yes change children】【No,this object only】【Cancel】
选择第一个按钮。
2、RolesCamera
Layer选择Default
Culling Mask选中Default,不要选中TipInfo
在Camera Preview可以看到这个摄像机仅仅照射第2~4个角色模型。
3、Role1Camera
Layer选择Role1
Culling Mask选中Role1,不要选中Default、UI、TipInfo
在Camera Preview可以看到这个摄像机仅仅照射第1个角色模型。
4、Role4Camera
Layer选择Role4
Culling Mask选中Role4,不要选中Default、UI、TipInfo
在Camera Preview可以看到这个摄像机仅仅照射第4个角色攻击状态的模型。
坦克项目UGUI经验总结2015-10-9 10:44
UGUI动画变迁
第2、3版坦克选择UI进场离场动画:
12个坦克节点,每个节点挂1个Animation组件,Animations组件的Size属性填2,第0、1个元素分别填进场、离场动画的anim文件,Play Automatically选择打钩;第一个坦克节点还挂1个坦克UI控制脚本,处理OnAnimEventTankUILeave事件;动画事件在Animation视图中编辑、添加、删除。
坦克结算UI:
针对每个MVP节点在项目视图存放anim文件的路径下创建1个Animator Controller,命名为A1MVPAnim等等,每个MVP节点挂1个Animator组件, Controller填A1MVPAnim等等,在状态机上拖进场和离场的anim文件进来,挂一个坦克结算UI控制脚本。
Unity 2D游戏开发快速入门第一章
http://www.docin.com/p-895914135.html
RangTanks(狂怒坦克)
Win7+Unity4.5.3
在2013年发布4.3版本时,就开始提供对制作2D游戏的支持了。
Texture Type:表示图片的类型。对于2D游戏项目,系统默认设置为Sprite(2D\uGUI);对于3D游戏项目,默认设置
为Texture。
Filter:此属性一共有3个选项:Point、Bilinear、Trilinear。
Max Size:表示图片的最大尺寸。图片Platform实际尺寸是397*221,属性中最接近397的是512。
Format:表示图片的格式。
http://www.docin.com/p-895914134.html
UGUI全面实践教程
http://www.docin.com/p-1155996353.html
NGUI全面实践教程
http://www.docin.com/p-1117662568.html
NGUI发布于2012年初,发布者从版本1.08开始持续不断的将NGUI插件更新到现在的3.8.1版本(2015年3月23日的数据)。
Win7+NGUI3.8.0+Unity4.5.5。
Unity3d UGUI 官方示例 包括UGUI各个控件的用法的示例
http://download.csdn.net/detail/xushuai20142014/8809107#comment
uGUI 2d面板显示3D模型问题
用RawImage+RenderTexture可以做,参考官方Demo的RenderTexture例子。
UGUI全面实践教程
http://www.docin.com/p-1155996353.html
chap7官方示例及其简要说明
7.7实时纹理绘制示例——RenderTexture
Chap5控制动画
——Unity开发实战这一章可读性很差,略过
Mecanim
Avatar
http://edu.51cto.com/lesson/id-46981.html

3个核心控件:Text、Image、Button
小雪花是Anchor(锚点)
小圆点是Pivot(中心点、重心点),0~1表示没有离开控件本身
中心点和锚点重合:偏移量PosX,PosY为初始值0,0
http://edu.51cto.com/lesson/id-46982.html
Text控件
Txt_UserName
InputField控件:1个母控件,2个子控件
20160116添加:
NGUI版本:
2012年初,NGUI 1.0.8发布
2.2.2
2.6.1
2.6.3
2013-08-06之前,2.6.4
2.7.0
3.0.0
3.0.9 f4
3.5.4
3.6.0
4手柄+NGUI3.7.8
3.8.0,Win7+Unity4.5.5及以上版本
2015年3月23日,3.8.1
4.0
NGUI将全部的源码分成了5个部分:
Editor(与Unity编辑器相关的脚本)、
Interaction(与交互功能相关的脚本)、
Internal(间接发挥作用的脚本)、
Tweening(与补间动画功能相关的脚本)、
UI(与UI功能相关的脚本)。
高雪峰:Unity 3D NGUI 实战教程
http://wenku.baidu.com/view/ba880d8252d380eb63946d77.html?from=search
chap1初始NGUI
1.1游戏UI开发介绍
1.2什么是NGUI
chap2 NGUI基础
2.1导入NGUI插件
2.1.1NGUI版本介绍
2.1.2NGUI的下载和购买
2.1.3导入NGUI插件应用
2.1.4导入常见问题
2.2认识基本的UI资源
2.2.1什么是UI精灵(Sprite)
2.2.2什么是UI图集(Atlas)
2.2.3什么是UI贴图(Texture)
2.2.4什么是UI标签(Label)
2.2.5什么是UI字体(Font)
2.3制作第一个UI图集
2.3.1学会解剖UI的资源结构
2.3.2学会导入切好的美术资源
2.3.3用Atlas Maker制作图集
2.4制作第一个UI字体
2.4.1为什么要制作UI字体
2.4.2静态字体和动态字体
2.4.3制作静态字体介绍
2.4.4制作动态字体介绍
2.5创建第一个UI
2.5.1创建一个2D UI
2.5.2创建一个3D UI
2.5.3了解UIRoot、UIPanel和UICamera组件
2.6 2DUI和3DUI的工作原理
2.6.1 2DUI的工作原理
2.6.2 3DUI的工作原理
2.6.3 如何判断该选择哪一种UI
2.7深度(Depth)概念
2.7.1强化对深度的理解
2.7.2小心相机的深度
chap3核心组件
3.1什么是UI控件
3.2制作精灵(UISprite)
3.2.1怎样判断是否应该使用精灵
3.2.2创建精灵
3.2.3Sprite组件的设置
3.3制作标签(Label)
3.3.1怎样判断是否应该使用标签
3.3.2创建标签
3.3.3Label的文字设置
3.4制作UI纹理(UITexture)
3.4.1什么情况下使用UITexture
3.4.2创建纹理
3.4.3纹理的设置
3.5制作按钮(Button)
3.6制作进度条(UISlider)
3.7制作输入框(Input)
3.8制作滚动视图(ScrollView)
3.9制作复选框(Toggle)
3.10制作下拉菜单(PopupList)
chap4 UI动画
4.1常见的两种UI动画介绍
4.1.1要区分UI动画和UI特效两个概念
4.1.2关于Tween动画
4.1.3关于Animation动画
4.2渐隐渐现动画(透明度动画)
4.3颜色变化动画(变色动画)
4.4位置变化动画(位移动画)
4.5旋转变化动画(旋转动画)
4.6大小变化动画(放缩动画)
4.7Tween动画总结
4.8动画控制组件UIPlayTween
4.8动画控制组件UIPlayAnimation
chap5其他组件
chap6 NGUI实战进阶
chap7用代码深度控制UI
chap8实用案例演示
chap9常见疑难问题解答
图集Atlas
将多张零散的图片融合成为一张图,低碳环保。
字体Font
动态字体
使用标准的字体文件.TTF。
图集字体
将字体弄到图集里,根据坐标静态调用。
好处可以使用各种效果,以及聊天表情。
面板Panel
用于组织界面元素。每一个面板,都会让层从0开始。
NGUI
Panel常规面板
常规
静态
切割
选项卡要玩家单独实现。
文本栏Label
用于显示文本信息
NGUI
颜色
图片:需要自定义输入内容
阴影
轮廓
按钮Buton
NGUI
旧版本采用消息机制,新版本使用了委托的方式 
普通按钮
图片按钮
Tween组件
在两个值之间随时间进行渐变,用于实现一些伴随时间的效果。
比如淡入、淡出、移动、旋转、放大缩小等。
NGUI
iTween
NGUI:多个物体可以属于一个层。层一定要弄好,不能混乱。对齐方式一定要设定好,否则大乱。
统一的层管理,我们约定:基础背景0~1层,一级面板在2层,面板元素3~6层,二级面板7~10层,不能超过3级面板。
Unity最火十大插件20130130
1、2D Toolkit 1.90 Final
能够让开发者在Unity中进行2D开发。
能够完全支持Unity4,它对于2.5D场景的开发和建立也十分有效。
2、NGUI 2.3.1
3、Playmaker 1.4.5
4、EasyTouch 2.5.1 & EasyJoystick 1.0
5、UnIDE 1.0.5
UnIDE 1.0.5新增了对Mac OS X系统的支持,性能更加流畅。
6、Tile Based Map and Nav 2.8b
7、FX Maker 1.27
是一款制作特效的工具,它专为移动操作系统做了优化。
包括300种Prefab特效,300种纹理结构、100种网格、100种曲线效果。
由开发商IGSoft提供。
8、Toon shader 1.5
是一款卡通着色器,适用于iOS系统。
9、Top-Down Assets Mobile Final
是一个游戏视图工具包。
10、83 Explosion Sound Effects 1.1
这是一个声音特效工具包,包含83个WAV立体声文件。这些声响均是爆炸声响。
所有的声音文件均为16bit 44.1KHz立体声WAV文件。

20160119添加:
密码9900
http://www.manew.com/thread-1206-1-1.html
第59讲
Mecanim读作Mec+anim
动画片段Animation Clip
身体遮罩Body Mask,以.mask保存
Avatar读作Ava+tar,属于子资源
Animator组件
Animator Controller,属于资源
http://www.manew.com/thread-1207-1-1.html
第60讲:
创建角色资源的三个主要步骤:
建模、骨骼设置、蒙皮
自动角色系统或角色产生软件:
Poser,Makehuman or Mixamo
Unity中,标准立方体盒子是1米
正常角色的高度是2米
第62讲
http://www.manew.com/thread-1209-1-1.html
单击模型标签,改变缩放系数,点击实施按钮
人类类型角色都有类似的骨骼结构:躯干、头部、四肢
骨骼的创建和命名时要遵循一定规范
创建角色的Avatar
分析导入的角色资源的骨骼结构,其过程是与Mecanim中已有的简化的标准人类骨骼进行对比
Rig标签
动画类型选择Hunmanoid


Unity4.2.0打开Unity4.6.4创建的工程会出现以下提示:
Project incompatible,New version of Unity required
Your project was created with a newer version of Unity.
You should upgrade to the latest version of Unity.
You risk data loss if you continue!
【Quit】【Continue and risk data loss】


打开一个旧版本的工程会出现提示:
Upgrading project
Upgrading project
After upgrading the project,you can not open the project with older versions of Unity anymore.
【Continue】【Quit】
点击【Continue】会出现提示:
Project reimport required
【Reimport Project】【Quit】


Unity3D光照贴图烘焙知识
http://www.docin.com/p-1046168380.html
Unity在4.x版本里使用光照烘焙的方法,采用的是Autodesk的Beast,Beast只能烘焙静态的光照贴图,而不支持动态光照。
使用Beast的工作流程是:先建造一个场景,然后在场景中布置各种光源,进而点击Bake操作键,接下来整个烘焙过程可能需要几小时。
Unity 5.0中会舍弃掉Beast,取而代之的是PowerVR Ray Tracing和Enlighten这两种方案的结合。PowerVR Ray Tracing的特点是不需要烘焙过程,速度非常快,但是效果不是非常理想。Enlighten的特点是需要一定的烘焙过程,但是效果非常好。PowerVR Ray Tracing负责编辑器中的编辑模式,即所见即所得的模式;而Enlighten会负责游戏内的实时渲染。


http://unity3d.com/cn/unity/whats-new/unity-3.5
Unity3.5新特性与改进:
1、忍者飞镖粒子系统
2、内置寻路
3、升级的遮挡剔除、新的LOD
4、Google Chrome Native Client deployment
5、线性空间照明和HDR
http://unity3d.com/cn/unity/whats-new/unity-3.5.5
Unity 3.5.5主要包含Unity 3.5的修复。
http://unity3d.com/cn/unity/whats-new/unity-4.0
Unity 4.0新的强大的特性:
1、Mecanim,驱动角色或物件的新的动画系统
2、所有平台的实时阴影
3、DX11渲染
4、忍者飞镖粒子系统更新了世界碰撞功能
5、Adobe Flash和Linux两个新平台
6、跨平台动态字体
http://unity3d.com/cn/unity/whats-new/unity-4.1
Unity 4.1带来了如下新特性:
1、更强大的内存分析器
2、AirPlay支持
3、Mecanim更新
4、Shader更新
5、移动平台支持Allegorithmic Substances
http://unity3d.com/cn/unity/whats-new/unity-4.1.5
Unity 4.1.5带来一些修正。
发行说明:
修正Windows上MonoDevelop的问题
已知问题:
Win8上MonoDevelop作为默认编辑器启动时不能自动打开脚本
http://unity3d.com/cn/unity/whats-new/unity-4.6.2
Unity 4.6.2带来一些改进和修正
发行说明:
特性:
使用il2cpp支持iOS 64位
变更:
不再支持Flash目标编译。
改进:
修复:
iOS:修复Xcode6.2支持
http://unity3d.com/cn/unity/whats-new/unity-4.6.4
Unity 4.6.4带来一些改进和修正
发行说明:
特性:
Unity免费版中支持Intel实感插件
改进:
iOS:支持Xcode6.3
变更:
苹果要求,支持的最低iOS版本升为5.1
修复:
http://unity3d.com/cn/unity/whats-new/unity-5.0
Unity 5.0包含强大的新特性:
1、基于物理的标准着色器
2、实时全局照明
3、混音器
4、HDR反射探头增强视觉保真度
5、PhysX 3.3带来了3D物理方面极大的性能提升
6、主要更新了动画系统
7、WebGL预览
http://unity3d.com/cn/unity/whats-new/unity-5.0.1
Unity 5.0.1带来新特性、一些改进、变更和许多修复。
发行说明:
改进:
Android:手柄输入优化,修复在一些较老设备上变慢的问题
变更:
修复:
iOS:增加Xcode6.3兼容性
http://unity3d.com/cn/unity/whats-new/unity-5.0.2
Unity 5.0.2带来新特性、一些改进、少许变更和大量修复。
发行说明:
特性:
改进:
Editor:Minimum API Level列表增加Android 5.0 and 5.1
变更:
修复:
iOS:增加Xcode6.3建立并运行的支持

罗盛誉:Unity 5.x游戏开发指南
http://vdisk.weibo.com/s/e41M8kW4cptg
chap4 3D基础知识
4.1 Camera摄像机
4.1.1摄像机参数
摄像机参数
参数|说明
Clear Flags|清除标记,决定屏幕的哪部分被清除。该项一般用于使用多台摄像机来描绘不同游戏对象的情况。
Depth only:深度相机,只渲染采集到的画面。
Culling Mask|剔除遮罩。摄像机将看到勾选的层,忽略未被勾选的层。
Projection|投射方式。
Perspective:透视。摄像机以正交方式渲染画面,拍摄区域是一个截锥体。
Orthographic:正交。摄像机以正交方式渲染画面,拍摄区域是一个长方体。
Depth|该项用于控制多个摄像机的渲染优先级。数值越大优先级越高。优先级高的摄像机拍摄的画面将覆盖在优先级低的摄像机的画面上。
Rendering Path|渲染路径。该项用于指定摄像机的渲染方法。
Use Player Setting:摄像机将使用设置的渲染方法,即Project Settings下Player中的设置。
Target Texture|目标纹理。将摄像机画面输出到一张贴图而不是屏幕,可用于实现画中画或者画面特效。
Occlusion Culling|是否剔除物体背向摄像机的部分。
HDR|高动态光照渲染
4.1.2摄像机投射
4.2 3D模型
4.2.1 Mesh网格模型
4.2.2 Texture贴图
4.2.3 Material材质
4.2.4对应组件
4.2.5骨骼动画
4.3小结
4.4习题
chap6 创建人物
6.1 Mecanim系统
Mecanim系统是Unity在4.0版本开始引入的新动画系统,它提供了以下几种功能。
为人形角色提供了简单的设置和制作流程,包括Avatar的创建和对Muscle definitions肌肉定义的调节。 
动画的复用性。主要通过动画重定向实现,可以非常方便地把动画从一个角色模型应用到具有相同骨骼结构的其他角色模型上。 
通过可视化的工具可以方便地创建、预览动画或者管理不同状态的切换。
身体逻辑,如下半身在执行跑步动作的同时,上半身在执行开枪动作。
一般来说,整个人物的创建分为以下3个阶段。
资源准备和导入阶段。
状态机阶段。
脚本阶段。
6.2 导入模型
6.2.1模型导入设置
6.2.2 Avatar的设置
6.3状态机
6.3.1 Animator
6.3.2添加碰撞体
6.3.3添加摄像机
6.3.4动作混合与控制
6.4反向动力学
6.5人体动画重定向
6.6小结
6.7习题
chap9用户界面
Unity中的UI的发展从最早的OnGUI系统,到之后EzGUI和NGUI两个插件的阶段。现在我们有了最新的官方的uGUI系统,它借鉴了NGUI的很多设计,例如NGUI中所有的UI元素都放在UIRoot根节点下,类似地,uGUI中的所有元素都放置在Canvas画布下。
9.1Sprite精灵
精灵是UI以及Unity 2D的基本元素。在UI系统中,所有图片的显示都必须通过精灵。
如果建立工程时选择的是2D工程,那么导入的所有图片会自动设置为精灵;而如果是3D,那么需要对图片的导入设置进行更改。
9.1.1图片设置为精灵
在监视窗口中将纹理类型设置为Sprite(2D and UI),并点击窗口右下角的Apply按钮。
9.1.2图片切割为多个精灵
当精灵模式为Single时,表明整张图片将作为一个精灵;当精灵模式为Multiple时,表明整张图片包含多个精灵。我们需要图片进行切割。
9.1.3设置Border边界
9.1.4Pivot锚点
Pivot锚点在精灵编辑器界面以蓝色空心圆钮表示。
9.2Canvas画布
Canvas实际上是一个游戏对象上绑定了Canvas组件。所有UI元素都必须是Canvas的子对象。
9.2.1创建画布
9.2.2画布参数
第一个参数渲染模式有3种:
1.屏幕空间-覆盖模式的画布会填满整个屏幕空间,并将画布下的所有UI元素置于屏幕的最上层,或者说画布的画面永远覆盖其他普通3D画面。如果屏幕尺寸被改变,画布将自动改变尺寸来匹配屏幕。
Pixel Perfect:使UI元素像素对应,效果就是边缘清晰不模糊。
Sort Layer:用以指明画布的深度。
2.屏幕空间-摄像机模式和屏幕空间-覆盖模式相似。不同的是,在该模式下,画布会被放置在指定摄像机的前方。
Pixel Perfect:只有RenderMode为Screen类型时才有的选项。使UI元素像素对应,效果就是边缘清晰不模糊。
屏幕空间-摄像机模式比屏幕空间-覆盖模式多了下面几个参数。
Render Camera:摄像机。
Plane Distance:画布平面距离摄像机的距离。
Sorting Layer:用以指明画布的深度。
Order in Layer:在相同Sorting Layer下的画布显示先后顺序。数字越高,显示的优先级也就越高。
3.世界空间模式。在此渲染模式下,画布被视作与场景中其他普通游戏对象性质相同的类似一张面片的对象。画布的尺寸可以通过Rect Transform设置,所有UI元素可能位于普通3D物体的前面或者后面显示。当UI为场景的一部分时,可使用这个模式。
9.3 Image图片
点击导航菜单栏|GameObject|UI|Image导航栏,创建一个Image元素。
Rect Transform:所有UI元素都是以矩形来表现的。
RectTransform是继承自Transform的一个组件,是所有UI元素都具有也必须具有的组件。
一共有9种锚点(Anchor)。当选定一种锚点后,该锚点为UI元素的坐标原点。
缩放元素要用width和height,而不用scale,因为scale会产生很多影响,例如字体的大小等。
选择“img01”的图片,并点击Texture Type栏的选择条选择Sprite。
Sprite精灵是所有UI和Unity 2D所使用的图片导入格式。
Image的参数
参数|说明
Source Image|原图,指定显示的图片
Color|颜色,设置图片的叠加颜色,默认设置为白色,显示与原图一致
Material|材质,可以指定自定义的材质,默认留空即可
Image Type|显示的类型,有简单、切片、砖块、填充4种类型
Preserve Aspect|简单、填充类型特有参数,是否保留精灵的原图形,而不进行自动剔除
Set Native Size|点击该按钮使显示与原图尺寸对应
// 填充类型
public void SetRage(int Heroindex,float Rage)
{
Image img=m_ImageWeapon2[Heroindex].GetComponent<Image>();
img.fillAmount=Rage;
}
9.5 Text文本
直接在文本组件的Text参数中填文本即可。
所有UI元素都可以添加轮廓及阴影效果,这两个效果也被Text元素所经常使用。
9.5.2添加阴影
9.5.3添加轮廓
chap15导航系统
15.1实现导航系统
15.1.1建立场景
15.1.2设置NavMesh
15.1.3烘焙
15.1.4设置导航代理
15.2障碍物
15.3分离网格链接
15.4小结
15.5习题
chap15导航系统
导航系统(navigation system)可以让人物在场景里智能地移动、绕过障碍等。
导航系统用NavMesh来解析环境。
15.1实现导航系统
本节首先创建场景并烘焙导航网络,接着创建导航代理,以实现让角色绕过重重障碍到达终点的功能。
chap19 2D游戏基础
19.1正交摄像机
19.2精灵
19.2.1精灵实现
19.2.2调整精灵尺寸
19.2.3精灵渲染器 
19.2.4图片导入设置
19.2.5精灵编辑
19.2.6精灵图集
19.3 2D物理系统
19.3.1刚体
19.3.2碰撞体
19.3.3 Joint 2D 
19.3.4 Constant Force 2D
19.3.5 Effector 2D
19.4小结
19.5习题
20150714添加:
Unity3d资源反编译(DisUnity) v0.3.3 官方最新版
http://www.cr173.com/soft/97114.html
——经测试,4.x的Unity资源可以反编译出来,5.x的不行
disunity extract F:\hxhwin7\Unity4.6.4\disunity\TankExe\tank_Data\*.*
disunity extract U3d5.02XunLong0619testdemo\assets\bin\Data\*.*
disunity extract Unity4_20150608\assets\bin\Data\*.*
disunity extract 20150601\assets\bin\Data\*.*

炉石传说:http://pan.baidu.com/s/1c0tU6J2 密码:fu2q
使用Mono进行平台无关的.NET开发
http://wenku.baidu.com/link?url=DbNijkKcqJGeXvyJfaVUqcnYMDZOQovpNdqjrtIsrM3WPMOaegr9B779rtxrV6MowVodeAYFje1HSjW14kauWBpFOYmD_SRVXTpKwsJxXGG
CLI公共语言基础结构Infrastruction
.NET的平台无关性
微软公司自己不提供.NET在Mac、Linux等平台下的安装包。
这两份规范是:
ECMA-334定义了C#编程语言的语法和语义;
ECMA-335定义了许多.NET平台的细节,统称为CLI。
ECMA-335规范分为6个部分:
部分1:架构
部分2:元数据
部分3:公共中间语言CIL
部分4:类库
部分5:二进制格式
部分6:附件
除了微软的CLR、Microsoft Silverlight和Microsoft .NET Compact Framework之外,还有另外两种主流的CLI实现:
Mono、Portable .NET。
Mono是与C# 2.0/NET2.0相兼容的。
Mono是还没有完全与C# 3.0或NET3.0/3.5相兼容的。
许多C# 3.0的语言特性已经是Mono 1.2.5的一部分了,包括隐式类型、对象初始化语法和匿名类型。
C:\Program Files (x86)\Unity\Editor\Data\Mono\bin>mono --version
Mono JIT compiler version 2.0 (Visual Studio built mono)
Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
        TLS:           normal
        GC:            Included Boehm (with typed GC)
        SIGSEGV:       normal
        Notification:  Thread + polling
        Architecture:  x86
        Disabled:      none
C:\Program Files\Unity\Editor\Data\Mono\bin>mono --version
Mono JIT compiler version 2.0 (Visual Studio built mono)
Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
        TLS:           normal
        GC:            Included Boehm (with typed GC)
        SIGSEGV:       normal
        Notification:  Thread + polling
        Architecture:  x86
        Disabled:      none

与微软的CLR发布相同,Mono也提供了多种托管的编译器:
mcs/gmcs,C#编译器
vbnc,Mono Visual Basic编译器
booc,Boo语言编译器
ilasm/ilasm2,Mono CIL编译器
Mono项目的第一个C#编译器是mcs,并且它完全兼容C# 1.1。
通用mono C#编译器(gmcs)是mcs用于支持.NET 2.0特有的C#语言特性和引用基于.NET 2.0的基类库的版本。C:\Program Files (x86)\Unity\Editor\Data
\Mono\lib\mono\2.0>gmcs -?
Mono C# compiler, Copyright 2001 - 2008 Novell, Inc.
mcs [options] source-files
   --about              About the Mono C# compiler
   -addmodule:M1[,Mn]   Adds the module to the generated assembly
   -checked[+|-]        Sets default aritmetic overflow context
   -codepage:ID         Sets code page to the one in ID (number, utf8, reset)
   -clscheck[+|-]       Disables CLS Compliance verifications
   -define:S1[;S2]      Defines one or more conditional symbols (short: -d)
   -debug[+|-], -g      Generate debugging information
   -delaysign[+|-]      Only insert the public key into the assembly (no signing
)
   -doc:FILE            Process documentation comments to XML file
   -help                Lists all compiler options (short: -?)
   -keycontainer:NAME   The key pair container used to sign the output assembly
   -keyfile:FILE        The key file used to strongname the ouput assembly
   -langversion:TEXT    Specifies language version: ISO-1, ISO-2, Default, or Fu
ture
   -lib:PATH1[,PATHn]   Specifies the location of referenced assemblies
   -main:CLASS          Specifies the class with the Main method (short: -m)
   -noconfig            Disables implicitly referenced assemblies
   -nostdlib[+|-]       Does not reference mscorlib.dll library
   -nowarn:W1[,Wn]      Suppress one or more compiler warnings
   -optimize[+|-]       Enables advanced compiler optimizations (short: -o)
   -out:FILE            Specifies output assembly name
   -pkg:P1[,Pn]         References packages P1..Pn
   -platform:ARCH       Specifies the target platform of the output assembly
                        ARCH can be one of: anycpu, x86, x64 or itanium
   -recurse:SPEC        Recursively compiles files according to SPEC pattern
   -reference:A1[,An]   Imports metadata from the specified assembly (short: -r)
   -reference:ALIAS=A   Imports metadata using specified extern alias (short: -r
)
   -target:KIND         Specifies the format of the output assembly (short: -t)
                        KIND can be one of: exe, winexe, library, module
   -unsafe[+|-]         Allows to compile code which uses unsafe keyword
   -warnaserror[+|-]    Treats all warnings as errors
   -warnaserror[+|-]:W1[,Wn] Treats one or more compiler warnings as errors
   -warn:0-4            Sets warning level, the default is 4 (short -w:)
   -help2               Shows internal compiler options
Resources:
   -linkresource:FILE[,ID] Links FILE as a resource (short: -linkres)
   -resource:FILE[,ID]     Embed FILE as a resource (short: -res)
   -win32res:FILE          Specifies Win32 resource file (.res)
   -win32icon:FILE         Use this icon for the output
   @file                   Read response file for more options
Options can be of the form -option or /option
显示特定程序集中C#指定类型的定义。
C:\Program Files (x86)\Unity\Editor\Data\Mono\lib\mono\2.0>monop System.Object
[Serializable]
public class Object {
        public Object ();
        public static bool Equals (object objA, object objB);
        public static bool ReferenceEquals (object objA, object objB);
        public virtual bool Equals (object obj);
        protected override void Finalize ();
        public virtual int GetHashCode ();
        public Type GetType ();
        protected object MemberwiseClone ();
        public virtual string ToString ();
}
C#开发Android应用实战 使用Mono for Android和.NET C#
Mono for Android程序集
程序集,说明
Mono.Android.dll,该程序集包含了绑定到Android API的C#
Mono.CompilerServices.SymbolWriter.dll,该程序集主要是针对编译器编写者
Mono.Data.Sqlite.dll,针对SQLite的ADO.NET提供程序
Mono.Data.Tds.dll,对TDS协议的支持;主要用于为System.Data内的
System.Data.SqlClient提供支持
Mono.Security.dll,加密API
mscorlib.dll,Silverlight
OpenTK.dll,OpenGL/OpenAL面向对象API,可对其进行扩展以提供Android设备支持
System.dll,Silverlight,再加上来自下列命名空间中的类型:
System.Collections.SpecializedSystem.ComponentModel.Design
System.DiagnosticsSystem.IO.CompressionSystem.Net
System.Net.CacheSystem.Net.Mail
System.Net.NetworkInformation
System.Net.Security
System.Net.Sockets
System.Security.Authentication
System.Security.Cryptography
System.Timer
System.Core.dll,Silverlight
System.Data.dll,删除了部分功能的.NET 3.5
System.Json.dll,Silverlight
System.Runtime.Serialization.dll,Silverlight
System.ServiceModel.dll,Silverlight Alpha中所呈现的WCF堆栈
……
System.Xml.dll,.NET 3.5
System.Xml.Linq.dll,.NET 3.5

chap15 在Mono for Android、MonoTouch和Windows Phone7之间共享代码
15.1三大平台
针对iOS的MonoTouch、Windows Phone上的.NET以及Android设备上的Mono for Android。下面将深入研究这三个平台。
15.1.1 Mono for Android
默认情况下项目包括mscorlib、System、System.Core、System.Xml和System.Xml.Linq程序集。除这些程序集外,项目还包括了Mono.Android程序集,而该程序集则包含了Android API的所有绑定。
15.1.2 MonoTouch
MonoTouch于2009年发布,它是一组允许.NET开发人员针对iPhone和iPod Touch进行开发的工具。
不同之处是MonoTouch包括一个MonoTouch.dll引用,Mono for Android则包括一个Mono.Android.dll引用。
MonoTouch.dll是针对iOS API的,而Mono.Android.dll则是针对Android API。
15.1.3 Windows Phone 7
还可以看到程序集Microsoft.Phone和Microsoft.Phone.Interop。这两个程序集是特定于手机的API。应用程序包括的另一个程序集是System.Windows,该程序集包括了大部分Silverlight API。
用Unity4.2.0打包APK到Android 2.2.3
打包时可能会出错:
Error building Player: Win32Exception: ApplicationName='D:/android-sdk-windows\tools\zipalign.exe', CommandLine='4 "D:\u3d4.2.0\Temp/StagingArea/Package_unaligned.apk" "D:
\u3d4.2.0\Temp/StagingArea/Package.apk"', CurrentDirectory='Temp/StagingArea'
解决方法:
将D:\android-sdk-windows\build-tools\19.1.0\zipalign.exe复制到D:\android-sdk-windows\tools即可

Unity5.1.1
iOS设置
Target iOS Version
6.0
7.0
7.1
8.0
8.1
Android设置
Mininum API Level
Android 2.3.1 'Gingerbread'(API level 9)
Android 2.3.3 'Gingerbread'(API level 10)
Android 3.0 'Honeycomb'(API level 11)
Android 3.1 'Honeycomb'(API level 12)
Android 3.2 'Honeycomb'(API level 13)
Android 4.0 'Ice Cream Sandwich'(API level 14)
Android 4.0.3 'Ice Cream Sandwich'(API level 15)
Android 4.1 'Jelly Bean'(API level 16)【小米2S:4.1.1 JRO03L,四核1.7GHz,2.00GB运行内存,16.00GB机身存储(2.12GB可用),IMEI:860955022931665,MAC地址:ac:f7:f3:5b:13:02,序列号:207d0147,AndroidId:a31d834f770ba6e0(刷机后会改变)】
Android 4.2 'Jelly Bean'(API level 17)
Android 4.3 'Jelly Bean'(API level 18)
Android 4.4 'Kit Kat'(API level 19)【TV上Android版本4.4.2】
Android 5.0 'Lollipop'(API level 21)

Unity4.6.4f1
iOS设置
Target iOS Version
5.1.1
6.0
7.0
7.1
8.0
8.1
Android设置
Mininum API Level
Android 2.3.1 'Gingerbread'(API level 9)
Android 2.3.3 'Gingerbread'(API level 10)
Android 3.0 'Honeycomb'(API level 11)
Android 3.1 'Honeycomb'(API level 12)
Android 3.2 'Honeycomb'(API level 13)
Android 4.0 'Ice Cream Sandwich'(API level 14)
Android 4.0.3 'Ice Cream Sandwich'(API level 15)
Android 4.1 'Jelly Bean'(API level 16)
Android 4.2 'Jelly Bean'(API level 17)
Android 4.3 'Jelly Bean'(API level 18)
Android 4.4 'Kit Kat'(API level 19)

Unity4.5.4f1、Unity4.6.0f3
iOS设置
Target iOS Version
4.0
4.1
4.2
4.3
5.0
5.1
6.0
7.0
7.1
Android设置
Mininum API Level
Android 2.3.1 'Gingerbread'(API level 9)
Android 2.3.3 'Gingerbread'(API level 10)
Android 3.0 'Honeycomb'(API level 11)
Android 3.1 'Honeycomb'(API level 12)
Android 3.2 'Honeycomb'(API level 13)
Android 4.0 'Ice Cream Sandwich'(API level 14)
Android 4.0.3 'Ice Cream Sandwich'(API level 15)
Android 4.1 'Jelly Bean'(API level 16)
Android 4.2 'Jelly Bean'(API level 17)
Android 4.3 'Jelly Bean'(API level 18)
Android 4.4 'Kit Kat'(API level 19)

Unity4.3.0f4、Unity4.3.4f1
iOS设置
Target iOS Version
4.0
4.1
4.2
4.3
5.0
5.1
6.0
Android设置
Mininum API Level
Android 2.3.1 'Gingerbread'(API level 9)
Android 2.3.3 'Gingerbread'(API level 10)
Android 3.0 'Honeycomb'(API level 11)
Android 3.1 'Honeycomb'(API level 12)
Android 3.2 'Honeycomb'(API level 13)
Android 4.0 'Ice Cream Sandwich'(API level 14)
Android 4.0.3 'Ice Cream Sandwich'(API level 15)
Android 4.1 'Jelly Bean'(API level 16)
Android 4.2 'Jelly Bean'(API level 17)
Android 4.3 'Jelly Bean'(API level 18)

Unity4.0.0f7、Unity4.2.0f4
iOS设置
不支持在Windows上生成iOS程序
Android设置
Mininum API Level
Android 2.0.1 'Eclair'(API level 6)
Android 2.1 'Eclair'(API level 7)
Android 2.2 'Froyo'(API level 8)
Android 2.3.1 'Gingerbread'(API level 9)
Android 2.3.3 'Gingerbread'(API level 10)
Android 3.0 'Honeycomb'(API level 11)
Android 3.1 'Honeycomb'(API level 12)
Android 3.2 'Honeycomb'(API level 13)
Android 4.0 'Ice Cream Sandwich'(API level 14)
Android 4.0.3 'Ice Cream Sandwich'(API level 15)
Android 4.1 'Jelly Bean'(API level 16)
Android 4.2 'Jelly Bean'(API level 17)【Unity4.0.0f7无、Unity4.2.0f4有】
http://wenku.baidu.com/view/152ec4d0b9d528ea81c779bc.html
2004年,Unity Technology公司成立,总部在旧金山。
2005年,Unity1.0发布。
2007年,Unity2.0发布。新增了地形引擎、实时动态阴影,支持DirectX 9并具有内置的网络多人联机功能。
2008年,iOS版本
2009年3月,Unity2.5发布。添加了对Windows Vista和XP系统的全面支持,所有的功能都可以与Mac OS X实现同步和互通。Unity在其中任何一个系统中都可以为另一个平台制作游戏,实现了真正意义上的跨平台。
2010年,Android版本
2010年9月,Unity3.0发布。添加了Android平台的支持。整合了光照贴图烘培引擎Beast。Unity3.0通过使用MonoDevelop在Windows和Mac系统上引入了脚本调试,可以中断游戏、逐行单步执行、设置断点和检查变量,还支持遮挡剔除和延迟渲染。
2011年,PS3版本和Xbox360版本
2012年2月,3.5正式版发布
2011年,3.5.5版本
2012年4月,Unity上海分公司成立,Unity正式进军中国市场。
2012年11月15日,Unity4.0发布。Unity4.0中加入了对DirectX 11的支持和Macanim动画工具,而且还增添了Linux和Adobo Flash Player发布预览功能。
2013年3月,4.1版本
新版本修复了先前版本的大量Bug并新增了内存分析器(Memory Profiler),能实时、动态地显示游戏中不同动画、不同物体的内存占用情况。在图形的着色和渲染方面有了大幅度的提升。
2013年7月,4.2版本
添加对于Win8、WP8以及Blackberry 10的支持。
2013年11月,4.3.0版本
2014年8月,4.5.3版本
支持通用Windows应用程序
2014年10月13日,Unity 4.5.5版本发布,这是4.5系列的最终版本
2014年11月,Unity 4.6
推出了新的UI系统ugui,添加了对Andorid-x86系统的支持,现在你可以选择构建目标平台为FAT、x86或ARMv7。
2015年1月,Unity4.6.2
这是Unity第一个支持64位iOS的正式版本,采用了最新的IL2CPP技术。
2015年,4.6.4版本
注0:Win8下安装jdk1.7.0_11,不要安装JDK6(1.6)
JDK安装后设置环境变量步骤如下:
 我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量: 
 变量名,变量值
JAVA_HOME,C:\Program Files\Java\jdk1.7.0_11
CLASSPATH,.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
PATH,C:\MinGW\bin;C:\Program Files (x86)\IDM Computer Solutions\UltraEdit\;C:\Program Files (x86)\IDM Computer Solutions\UltraCompare\;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
安装完成之后,可以在检查JDK是否安装成功。打开cmd窗口,输入java –version查看JDK的版本信息。出现类似下面的画面表示安装成功了:
C:\Users\DELL->java -version
java version "1.7.0_11"
Java(TM) SE Runtime Environment (build 1.7.0_11-b21)
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)
C:\Users\DELL->java -version
java version "1.6.0_43"
Java(TM) SE Runtime Environment (build 1.6.0_43-b01)
Java HotSpot(TM) 64-Bit Server VM (build 20.14-b01, mixed mode)
注1:Unity4.6.4中使用F:\adt-bundle-windows-x86-20140624\sdk会提示
Android SDK is outdated
SDK Build Tools version 20.0.0<21
Android SDK is outdated
SDK Platform Tools version 20.0.0<21
Android SDK is missing required platform api
Minimum platform required is Android 5.0(API level 21)
注2:Unity4.6.4中使用F:\adt-bundle-windows-x86_64-20130729\sdk会提示
Android SDK is outdated
SDK Tools version 22.0.5<23
选择Update
Updating Android SDK
注3:Unity4.6.4中使用C:\Program Files (x86)\Android\android-studio\sdk会提示
Android SDK is outdated
SDK Tools version 22.2.0<23
2015年3月,5.0版本
2015年6月,5.1版本
Win8下,路径带x86的是32位的Unity(C:\Program Files (x86)\Unity\Editor\Data\PlaybackEngines\androidplayer\release\bin),不带x86的是64位的Unity。
渲染平台
Unity支持多种图形API,目前支持的API包括:
d3d9
d3d11
opengl
gles
xbox360
ps3 
flash

unity4.x从入门到精通
序言
2012年Unity正式进入中国市场。
蓝港的《王者之剑》
完美世界的TOUCH骏梦的《新仙剑》
昆仑万维的《绝代双骄》
计算两个位置之间的距离
让游戏对象沿着指定方向移动
得到游戏对象当前旋转的角-轴表示
向前方移动
绕自身坐标轴Y轴旋转
绕世界坐标轴的Y轴旋转
使相机观察方向跟随物体移动
用户应避免在Unity编辑器外部移动或重命名项目资源文件,如果需重新组织或移动某个资源,应该在项目视图中进行,否则会破坏资源文件与Unity工程之间的关联,甚至会损坏游戏工程。 
chap6 Mecanim动画系统
6.1 Mecanim概述
6.1.1Mecanim工作流
6.1.2旧版动画系统
6.2资源的准备和导入
6.2.1如何获取人形网格模型
6.2.2如何导入动画
6.2.3动画分解
6.3使用人形角色动画
6.3.1创建Avatar
6.3.2配置Avatar
6.3.3设置Muscle参数
6.3.4 Avatar Body Mask
6.3.5人形动画的重定向
6.3.6逆向运动学功能(Pro only)
6.3.7一般动画
6.4在游戏中使用角色动画
6.4.1循环动画片段
6.4.2Animator组件
6.4.3Animator Controller
6.4.4动画状态机
6.4.5混合树
6.4.6 1D混合
6.4.7 2D混合
6.5案例分析 
chap1 Unity介绍
1.5软件安装
Unity编辑器可以运行在Windows和Mac OS X平台上,用户可依据自身的喜好来选择相应的平台工作。以下将介绍这2个平台上Unity编辑器的安装步骤,安装示例所用的Unity版本号均为4.1.3。
chap2 Unity编辑器
Scene Gizmo工具
在Scene视图的右上角是Scene工具,使用它可迅速将摄像机的视角切换到预设的视角上。
Top顶
Bottom底
Front前
Back后
Left左
Right右
2.8.2视图控制
在场景视图的上方是场景视图控制栏。
绘图模式默认选项是Textured
纹理显示模式
网格线框显示模式
纹理加线框网格显示模式
渲染路径显示模式
光照贴图显示模式
渲染模式默认是RGB选项
三原色显示
阿尔法通道显示
以半透明的方式显示物体
MIP映射图显示
用户选择绘图模式或渲染模式并不会改变游戏最终的显示方式,它只是改变场景物体在场景视图中的显示方式。
chap3资源导入流程
3.1 3D模型、材质与动画的导入
3.1.1主流三维软件简介
Autodesk Maya,Maya可在Windows、Mac OS等操作系统上运行。
Autodesk 3D Studio Max
Modo
Cinema 4D
Cheetah3D
LightWave
Blender
3.1.2模型、材质以及动画导入前的设置、准备工作
3.1.2.1 Unity与常见三维动画软件单位的比例关系
Unity的默认系统单位为“米”,三维软件的单位与Unity单位的比例关系非常重要。
8.最小化Unity窗口。下一步运行3ds Max软件,制作项目所需的模型素材。
13.在3ds Max中创建一个长宽高都为100cm的立方体,并将其位置移动到坐标原点。
3ds Max默认导出的FBX文件导入到Unity中的默认缩放因子是0.01,建议读者将3ds Max系统单位以及显示单位都设置成“厘米”。
19.刷新完毕后,在Unity界面项目视图中的Assets文件夹下会显示出新增的资源文件,即刚才导入的Player.FBX文件,并自动新建了Materials文件夹。
20.单击选择该FBX资源,在监测视图中可以看到Model选项卡中Scale Factor文本框中的默认数值为0.01。
21.鼠标拖动此FBX文件(下文用资源名字Player来代替)到场景视图或层次视图中,在层次视图中双击Player游戏对象,可以在场景视图中居中并最大化显示该游戏对象。
23.Unity中添加Cube默认的Scale值都为1.可以理解为该Cube的长宽高都为1m。
3.1.3将模型、材质、动画导入到Unity中
Unity支持的3ds Max材质球类型包括:
Standard标准材质
Multi/Sub-Object多维子材质,需要注意每个子材质必须是标准材质。
另外,材质的名称尽量与模型的名称对应,建议都采用英文字符命名。
9.在Advanced Options卷展栏下展开Units项,勾选Automatic复选框,接下来展开Axis Conversion项,选择Y-up(表明在Unity程序世界中世界坐标是Y轴向上
13.单击选中该FBX文件,在监测视图中可以看到该资源的相关属性。下面通过监测视图来讲解此类Prefab的相关参数。
(1)Model:模型的默认设置面板
Meshs:网格
Scale Factor:缩放系数。采用不同的软件、不同的单位(建议在三维软件中采用公制单位)创建的模型可以通过该功能进行校正。
Mesh Compression:网格压缩。压缩值越大则网格体文件越小。
Read/Write Enabled:读/写启用。
Optimize Mesh:优化网格。
Generate Colliders:生成碰撞体。
SwapUVs:交换UV。
Generate Lightmap:生成光照贴图UV通道。
Normals & Tangents:法线和切线
Smoothing Angle:平滑角度。
Split Tangents:分割切线。
Materials:材质。
Import Materials:导入材质。
Material Naming:材质命名。决定Unity材质的命名方式。有3个选项:
依照基础贴图名称
来自模型的材质名称
模型名+模型材质名
Material Search:材质搜索。决定Unity如何根据Material Naming选项,搜索定位相应的材质。有3个选项:
Local Materials Folder:局部材质文件夹
Recursive-Up:向上。Unity依次向上搜索Assets文件夹中所有的材质子文件夹。
Project-Wide:项目范围。Unity将在整个Assets文件夹中搜索材质。
(2)Rig:操控命令面板。
Animation Type:动画类型。该选项用来指定导入FBX资源的动画类型。
None:无动画。
Legacy:旧版的动画系统。
Generic:通用Mecanim动画系统。
Humanoid:人形Mecanim动画系统。
Avatar Definition:替身定义。
Create from this model:从这个模型创建,替身将依据选择的模型创建。
Copy from other Avatar:从其他替身复制。
Configure:配置Avatar替身。
Keep additional bones:保留附加的骨骼。
(3)Animations:动画。Animations选项卡中的内容会依据Rig选项卡中选择的动画类型而有所不同。
3.5 Unity Asset Store资源商店
也可以在Unity应用程序中依次打开菜单栏中的Window|Asset Store来直接访问,或直接按快捷键Ctrl+9。
3.5.1Asset Store简介
在创建游戏时,通过Asset Store中的资源可以节省时间、提高效率。
3.5.2Asset Store的使用方法
7.用户还可以在Asset Store视图中通过单击图标显示Unity标准的资源包和用户已下载的资源包,对于已下载的资源包可以通过单击Import按钮将其加载到当前的项目中。
chap4创建基本游戏场景
在Unity中可直接建立的基本几何体有5种:
正方体、球体、胶囊体、圆柱体、平面。 
4.3.3组件类型介绍
在Unity中,组件(Component)共分为如下7类。
1、Mesh
网格,该类型的组件有3项
网格过滤器Mesh Filter
该组件用于在项目资源中获取网格并将其传递到所属的游戏对象中。
文字渲染器Text Mesh
该组件用于生成三维的字符串(文字)。
网格渲染器Mesh Renderer
该组件用于从网格过滤器获得网格模型,进而根据游戏对象的Transform组件中定义的位置在Scene视图中进行渲染。
2、Effects
特效/效果,该类型的组件(包括旧版粒子系统在内)共有7项。 
粒子系统Particle System
轨迹/拖尾渲染器Trail Renderer
线条渲染器Line Renderer
镜头光晕Lens Flare
光环/光晕Halo
幻灯片Projector
旧版粒子系统Legacy Particles
 
3、Physics
物理组件,该类型组件有17项。
Unity拥有内置的NVIDIA PhysX物理引擎,可以模拟真实的物理行为。

4、Navigation
5、Audio
6、Rendering
7、Miscellaneous
4.5创建光源
光源是每一个场景的重要组成部分。光源决定了场景环境的明暗、色彩和氛围。每个场景中可以使用一个以上的光源,合理地使用光源可以创造完美的视觉效果。
4.5.1 Unity的光源类型
Unity提供了4种类型的光源,在合理设置的基础上可以模拟自然界中任何的光源。
1.Directional light:方向光源。
该类型光源可以被放置在无穷远处,额可以影响场景的一切游戏对象,类似于自然界中日光的照明效果。方向光源是最不耗费图形处理器资源的光源类型。
2、Point light:点光源。
点光源从一个位置向四面八方发出光线,影响其范围内的所有对象,类似灯泡的照明效果。点光源的阴影是较耗费图像处理器资源的光源类型。
3.Spotlight:聚光灯。
灯光从一点发出,在一个方向按照一个锥形的范围照射,处于锥形区域内的对象会受到光线照射,类似射灯的照明效果。聚光灯是较耗费图形处理器资源的光源类型。
4.Area Light:区域光/面光源。
该类型光源无法应用于实时光照,仅使用于光照贴图烘培。
4.5.2光源属性讲解
下面就所有类型光源的参数统一进行介绍:
Type:类型
可以选择光源的类型
Range:范围
用于控制光线从光源对象的中心发射的距离,只有点光源和聚光灯有该参数。
Spot Angle:聚光灯角度。
该项用于控制光源的锥形范围,只有聚光灯有该参数。
Color:颜色。
Intensity:强度。
Cookie:
Cookie Size:
Shadow Type:
Strength:强度。
Resolution:分辨率。
Bias:偏移。
Softness:柔化。
4.6.1摄像机类型
Unity中支持两种类型的摄像机,分别是Perspective(透视)以及Orthographic(正交)摄像机。通过改变摄像机的模式可以方便地指定摄像机的类型。
4.6.2摄影机参数
在Unity中创建摄像机对象时,默认情况下除了Transform(几何变换)组件外还会带有Camera、Flare Layer、GUI Layer、Audio Listener等4个组件。下面就Camera(摄影机)组件的参数来进行讲解:
Clear Flags:清除标记。决定屏幕的哪部份将被清除。该项一般用于使用多台摄像机来描绘不同游戏对象的情况,有3种模式可供选择:
Skybox:天空盒。该模式为默认设置。在屏幕中空白的部分将显示当前摄像机的天空盒。如果当前摄像机没有设置天空盒,它会默认使用Background(背景)色。
Solid Color:纯色。选择该模式屏幕上的空白部分将显示当前摄像机的Background(背景)色。
Depth only:仅深度。该模式用于游戏对象不希望被裁剪的情况。
Don't Clear:不清除。该模式不清除任何颜色或深度缓存。其结果是,每帧渲染的效果叠加在下一帧之上。一般与自定义的Shader(着色器)配合使用。
Background:背景。
该项用于设置背景颜色。在镜头中的所有元素渲染完成且没有指定Shybox(天空盒)的情况下,将设置的颜色应用到屏幕的空白处。
Culling Mask:剔除遮罩。
依据游戏对象所指定的层来控制摄像机所渲染的游戏对象。
Projection:投射方式。
Perspective:透视。摄像机将用透视的方式来渲染游戏对象。
Orthographic:正交。摄像机将用无透视感的方式均匀地渲染游戏对象。
Field of view:视野范围。(只针对透视模式)
该项用于控制摄像机的视角宽度,以及纵向的角度尺寸。
Size:大小。(只针对正交模式)。
该项用于控制正交模式摄像机的视口大小。
Clipping Planes:裁剪平面。摄像机开始渲染与停止渲染之间的距离。
Near:近点。摄像机开始渲染的最近的点。
Far:远点。摄像机开始渲染的最远的点。
Normalized View Port Rect:标准视图矩形。用四个数值来控制该摄像机的视图将绘制在屏幕的位置以及大小,该项使用屏幕坐标系,数值在0~1之间。
X:摄像机视图进行绘制的水平位置起点。
Y:摄像机视图进行绘制的垂直位置起点。
W:宽度。摄像机输出到屏幕上的宽度。
W:高度。摄像机输出到屏幕上的高度。
Depth:深度。
该项用于控制摄像机的渲染顺序,较大值的摄像机将被渲染在较小值得摄像机之上。
Rendering Path:渲染路径。该项用于指定摄像机的渲染方法。
Target Texture:目标纹理(该项只有Pro版才能支持)。
该项用于将摄像机视图输出并渲染到屏幕。一般用于制作导航图或者画中画等效果。
HDR:高动态光照渲染。
该项用于启用摄像机的高动态范围渲染功能。因为人眼对低范围的光照强度更为敏感,所以使用高动态范围渲染能够让场景更为真实,光照的变换不会显得太突兀。

5.5常用编辑器组件
常用编辑器组件可分为两种,一是原有组件,二是拓展组件。
5.5.1摄像机
作为一个游戏对象,摄像机存在Scene视图中。
摄像机组件的一些常用参数。
Clear Flags:背景显示内容,默认是天空盒子,前提是必须在Render Settings中设置过天空盒子材质。
Background:背景显示颜色。如果没有设置天空盒子,将显示这个颜色。
Culling Mask:用于选择是否显示某些层,默认为全部显示。
Projection:摄像机的类型。
Field of View:摄像机的视野范围。
Near:以摄像机为圆心,绘制最近点的距离。
Far:以摄像机为圆心,绘制最远点的距离。
Normalized View Port Rect:可理解为设定Game视图的显示区域参数。多台摄像机可以通过设置各自显示区域来分屏同时显示。
Depth:摄像机的深度。若存在多个摄像机,先渲染该值较小的摄像机。
Rendering Path:渲染路径。
Target Texture:目标纹理,设置后会挡住摄像机。

4.7地形编辑器
4.7.1地形编辑器概述
Unity中的地形编辑器支持LOD(Level of Detail)功能,能够根据摄像机与地形的距离以及地形起伏程度调整地形块(Patch)网格的疏密程度。远处或平坦的地形块使用稀疏的网格,近处或陡峭的地形块使用密集的网格。这将使游戏场景既真实、精细,同时也不影响性能。
地形与其他的游戏对象有些不同,需要注意的是,地形支持Transform(几何变换)组件中的Position(位置)变换,但对于Rotation(旋转)以及Scale(缩放)操作是无效的。
4.7.2地形的创建方式以及相关参数设定
4.7.2.1地形的创建及基本设置
1、打开菜单栏中的Terrain|Create Terrain项,便会创建一个地形
2、新建地形后,首先讲解一下菜单栏中Terrain项下面的设置。
Create Terrain:创建地形
该项用于在项目工程中创建地形并将该地形资源放置到场景中。
Import Heightmap-Raw…:导入高度图
Export Heightmap-Raw…:导出高度图
Set Resolution…:设置分辨率
该项用于设置地形尺寸、高度图分辨率、细节分辨率、纹理分辨率等相关参数
Terrain Width:地形宽度。用于设置地形的宽度。 
Terrain Height:地形高度。用于设置地形的高度。
Terrain Length:地形长度。用于设置地形的长度。
4.7.2.2地形组件参数详解
新建地形后,在监视视图可以看到地形对象所挂载的组件,除了Transform组件外,还有一个Terrain(Script)(地形脚本)组件以及一个Terrain Collider(地形碰撞)组件。
4.10天空盒
Unity中的天空盒实际上是一种使用了特殊类型Shader的材质,该种类型材质可以笼罩在整个游戏场景之外,并根据材质中指定的纹理模拟出类似远景、天空等的效果,使游戏场景看起来更完整。
4.10.1天空盒资源包的概述
1、启动Unity应用程序,依次单击菜单栏中的Assets|ImportPackage|Skyboxes选项,为项目工程导入Skyboxes.UnityPackage。
2、资源包被导入后,资源包中包含9个天空盒。
3、9种天空盒的效果如下:
DawnDusk Skybox
Eerie Skybox
MoonShine Skybox
Overcast1 Skybox
Overcast2 Skybox
StarryNight Skybox
Sunny1 Skybox
Sunny2 Skybox
Sunny3 Skybox
4.10.2天空盒的两种应用方式及其区别
一种是在Unity中Render Settings(渲染设置)里进行指定,这种方法是针对游戏场景的,简单地讲,就是在同一个游戏场景中,无论使用哪个摄像机对象,天空盒都保持不变。并且该方式指定天空盒可以在场景视图中直接显示。
另一种方式是为摄像机对象添加天空盒组件,然后在天空盒组件中进行指定,这种方法只针对摄像机本身,简单地讲,就是在同一个游戏场景中,如果切换摄像机对象,天空盒会随之变换。需要注意的是,为摄像机指定的天空盒优先级会高于在渲染设定中指定的天空盒。
4.10.3创建天空盒的方法
除了Skybox资源包中提供的天空盒外,Unity还支持用户自制天空盒材质。


chap6 Mecanim动画系统
Mecanim是Unity提供的一个丰富而复杂的动画系统,它提供了:
针对人形角色的工作流和动画创建能力。
Retargeting(运动重定向)功能,即把动画从一个角色模型应用到另一个角色模型上的能力。
针对Animation Clips(动画片段)的简易工作流,即针对动画片段以及他们之间的过渡和交互过程的预览能力。
一个用于管理动画间复杂交互作用的可视化编程工具。
通过不同逻辑来控制不同身体部位运动的能力。
Mecanim工作流可以被分解为3个主要阶段:
1、资源的准备和导入
这一步骤与Mecanim系统无关。
2、角色的建立
主要有以下两种方式: 
人形角色的建立
一般角色的建立。动画重定向功能对此并不适用。
3、角色的运动
这里包括设定动画片段及其相互间的交互作用,也包括建立状态机和混合树、调整动画参数以及通过代码控制动画等。
旧版动画系统是Unity引擎在4.0版本之前使用的老的动画系统。Unity公司正计划采用Mecanim动画系统逐步彻底地替换旧版动画系统。
在使用角色模型之前,首先需要将它导入到项目工程中来。Unity可以导入原生的Maya文件(.mb或者.ma)、Cinema4D文件(.c4d)以及一般的FBX文件。
Animation Clips(动画片段):动画角色具有的一系列的在不同情景下被触发的基本动作,比如行走、奔跑、跳跃、投掷和死亡等,这些基本动作被称为动画片段。
最容易使用的动画模型是含有预分解动画片段的模型。
使用预分解动画模型
使用未分解动画模型
用户可以为任意模型的动画组件添加动画片段
在非Mecanim模型(没有肌肉定义)上加入动画片段要将Muscle Definition属性设置为None。
另一种导入动画片段的方法是遵循Unity指定的动画文件命名方案。
用户可以创建独立的模型文件并按照modelName@animationName.fbx的格式命名。
除了人形动画,Mecanim系统也能够支持非人形动画,只不过在非人形动画中无法使用Avatar系统和其他一些相关功能。在Mecanim系统中,非人形动画被称为一般动画(Generic Animation)。
在人形动画中,一般可以很容易知道人形模型的中心点和方位;但对于一般动画,由于骨架可以是任意形状,则需要为其指定一根参考骨骼,它在Mecanim系统中被称为根节点(root node)。选中根节点后,即可建立多个动画片段之间的对应关系,且实现它们之间的正确混合。此外,根节点还对实现区分骨骼动画和根节点的运动具有重要意义(通过OnAnimatorMove进行控制)。
动画片段可以基于姿态、旋转和位置进行循环。
任何一个拥有Avatar的GameObject都同时需要有一个Animator组件,该组件是关联角色及其行为的纽带。
Animator组件中还引用了一个Animator Controller,它被用于为角色设置行为,这里所说的行为包括状态机(State Machines)、混合树(Blend Trees)以及通过脚本控制的事件(Events),具体包括:
Controller:关联到该角色的animator控制器。
Avatar:该角色的Avatar。
Apply Root Motion:是使用动画本身还是使用脚本来控制角色的位置。
Animate Physics:动画是否与物理交互。
Culling Mode:动画的裁剪模式。
Always animate:总是启用动画,不进行裁剪。
Based on Renderers:当看不见角色时只有根节点运动,身体的其他部分保持静止。
20150824补充:
chap7物理引擎
7.1 Rigidbody:刚体
刚体组件可使游戏对象在物理系统的控制下来运动,刚体可接受外力与扭矩力用来保证游戏对象像在真实世界中那样进行运动。任何游戏对象只有添加了刚体组件才能受到重力的影响。
在Unity中为游戏对象添加刚体组件的方法是:
1、选中该对象,然后依次打开菜单栏中Component->Physics->Rigidbody选项,这样就在该游戏对象上添加了刚体组件。
2、Rigidbody组件的属性面板如图所示。刚体组件的各参数介绍如下:
Mass:质量。
该项用于设置游戏对象的质量。
Drag:阻力。
当对象受力运动时受到的空气阻力。0表示没有空气阻力,阻力极大时游戏对象会立即停止运动。
Angular Drag:角阻力。
当对象受扭矩力旋转时受到的空气阻力。0表示没有空气阻力,阻力极大时游戏对象会立即停止运动。
Use Gravity:使用重力。
若开启此项,游戏对象会受到重力的影响。
Is Kinematic:是否开启动力学。
若开启此项,游戏对象将不再受物理引擎的影响从而只能通过Transform(几何变换组件)属性来对其操作。该方式适用于模拟平台的移动或带有铰链关节链接刚体的动画。
Interpolate:插值
该项用于控制刚体运动的抖动情况,有3项可供选择。
None:没有插值。
Interpolate:内插值。基于前一帧的Transform来平滑此次的Transform。
Extrapolate:外插值。基于下一帧的Transform来平滑此次的Transform。
Collision Detection:碰撞检测。
该属性用于控制避免高速运动的游戏对象穿过其他的对象而发生碰撞,有3项可供选择。
Discrete:离散碰撞检测。该模式与场景中其他的所有碰撞体进行碰撞检测。该项为默认值。
Continuous:连续碰撞检测。
Continuous Dynamic:连续动态碰撞检测模式。
Constraints:约束。
该项用于控制对于刚体运动的约束。
Freeze Position:冻结位置。刚体对象在世界坐标系中的X、Y、Z轴方向上(勾选状态)的移动将无效。
Freeze Rotation:冻结旋转。刚体对象在世界坐标系中的X、Y、Z轴方向上(勾选状态)的旋转将无效。
通常没有必要在操作一个对象刚体的同时也操作其Transform,只需要二选其一即可。
7.2 Colliders:碰撞体
碰撞体是物理组件中的一类,它要与刚体一起添加游戏对象上才能触发碰撞。
添加碰撞体的方法:首先选中一个游戏对象,然后依次打开菜单栏Component->Physics选项,可选择不同的碰撞体类型,这样就在该对象上添加了碰撞体组件。
7.2.1碰撞体型介绍
1.Box Collider:盒碰撞体
是一个立方体外形的基本碰撞体。
Is Trigger:触发器。
勾选该项,则该碰撞体可用于触发事件,并将被物理引擎所忽略。
Material:材质。
采用不同的物理材质类型决定了碰撞体与其他对象的交互形式。
Center:中心
碰撞体在对象局部坐标中的位置。
Size:大小。
碰撞体在X、Y、Z方向上的大小。
2.Sphere Collider:球形碰撞体
3.Capsule Collider:胶囊碰撞体
4.Mesh Collider:网格碰撞体
5.Wheel Collider:车轮碰撞体
7.2.2碰撞体相关的知识点介绍
7.3 Character Controller:角色控制器
7.4布料
7.4.1交互布料
7.4.2蒙皮布料
7.4.3布料渲染器
7.5关节
7.5.1铰链关节
7.5.2固定关节
7.5.3弹簧关节
7.5.4角色关节
7.5.5可配置关节
7.6力场
7.7物理引擎实例
chap9导航网格寻路
9.1概述
NavMesh(导航网格)是3D游戏世界中用于实现动态物体自动寻路的一种技术,它将游戏场景中复杂的结构组织关系简化为带有一定信息的网格,在这些网格的基础上通过一系列相应的计算来实现自动寻路。Unity从3.5开始集成了导航网格功能,并提供了方便地用户界面。导航时,只需要给导航物体挂载导航组件,导航物体便会自行根据目标点来寻找最直接的路线,并沿着该路线行进到目标点。
chap12游戏开发基础知识
在游戏引擎中使用的矩阵通常为4*4矩阵,因为它可以描述向量的平移、旋转、缩放等所有的线性变换。
如果引入齐次坐标,则可以使用(x,y,z,1)来表示坐标点,而使用(x,y,z,0)来表示向量。
四元数Q可记作:Q=[w,(x,y,z)]
在3D数学中使用单位四元数/欧拉角/矩阵来表示旋转,对于三维空间中旋转轴为n,旋转角度为a的旋转,如果用四元数表示,四个分量分别为:
w=cos(a/2),x=sin(a/2)cos(b_x),y=sin(a/2)cos(b_y),z=sin(a/2)cos(b_z)
其中cos(b_x),cos(b_y),cos(b_z)分别表示旋转轴的x,y,z分量。
Unity中物体的前方向为局部坐标系z轴的正方向
可编程管线的核心就是Shader。
在Direct3D 9中,渲染管线主要有9个处理阶段构成。分别是:局部坐标变换→世界坐标变换→观察坐标变换→背面消隐→光照计算→裁剪→投影→视口计算→光栅化。对于可编程管线,顶点变换和光照可以通过编写Vertex Shader来控制,光栅化则可以通过编写Pixel Shader来控制。
chap13 Unity脚本开发基础
在Unity中,游戏交互通过脚本编程来实现。
脚本可以理解为附加在游戏对象上的用于定义游戏对象行为的指令代码。通过脚本,开发者可以控制每一个游戏对象的创建、销毁以及对象在各种情况下的行为,进而实现预期的交互效果。
Boo是Python语言在.NET上的实现,使用者相对较少。
Unity的脚本语言基于Mono的.NET平台上运行,可以使用.NET库,这也为XML、数据库、正则表达式等问题提供了很好的解决方案。
Unity里的脚本都会经过编译。
Unity的3种脚本语言实际上在功能和运行速度上是一样的,区别主要体现在语言特性上。
Unity官方示例中的脚本基本都是用JavaScript写的。有人将Unity使用的JavaScript称为UnityScript。
大多数的Unity第三方插件都是用C#编写的。
C#基本语法
在Unity中,C#变量声明方式为:
变量前面可以添加访问修饰符public、protected、private,其中public的变量可以在监测视图中查看和编辑,不添加访问修饰符默认为private(在JavaScript中默认为public)。
JavaScript/C#中可用的变量类型:
数值类型
字符串
布尔值
在C#中只能使用内建数组
虽然不能使用Array数组,但是可以使用ArrayList、List等容器来达到同样的目的。
C#中的操作符与JavaScript操作符一致。
C#中的条件判断语句、循环语句、switch语句的使用与JavaScript语句一致。
参数可以使用关键字ref声明为传引用参数,在函数调用时的实参数前也需要添加ref。
另外,函数参数前可以使用关键字out实现返回多个数值。
在使用C#编写脚本时还需要注意以下几个规则:
1、凡是需要添加到游戏对象的C#脚本类都需要直接或间接地从MonoBehaviour类继承。
2、使用Start或者Awake函数来初始化,避免使用构造函数。不使用构造函数的原因是在Unity里无法确定构造函数何时被调用。
3、类名要与脚本文件名相同。这里要求与文件名同名的类指的是从MonoBehaviour继承的行为类,普通的C#类可以随意命名。
4、协同函数(Coroutines)返回类型必须是IEnumerator,并且用yield return替代yield。
5、目前Unity里的C#不支持自定义命名空间。
在Unity中有两种新建脚本文件的方法,操作方法分别为:
1、打开菜单栏中的Assert|Create|Javascript项或者是C# Script项
2、在项目视图上方单击Create按钮,或者在视图区域右击,在快捷菜单中选择Create|Javascript项或者是C# Script项来创建脚本
#pragma strict禁用了脚本的动态类型,强制使用静态类型。
脚本必然事件(Certain Event):在满足某些条件时由Unity自动调用。
Start、Update正是最常用的两个。
层次视图中的游戏对象:
Player1
监测视图的属性
项目视图中的脚本
Player1.cs
 
在Unity中,开发者编写的每一个脚本都被视为一个自定义的组件,游戏对象可以理解为能容纳各种组件的容器。游戏对象的所有组件一起决定了这个对象的行为和游戏中的表现。作为一个组件,脚本本身是无法脱离游戏对象独立运行的,它必须添加到游戏对象上才会生效。
MonoBehaviour是Unity中一个非常重要的类,它定义了基本的脚本行为,脚本必然事件就是从MonoBehaviour继承而来。除了必然事件,MonoBehaviour定义了对各种特定事件的响应函数,这些函数名称均以On作为开头。
表13-7常用的事件响应函数
OnBecameVisible对于任意一个相机可见时调用
OnBecameInvisible对于任意一个相机不可见时调用
13.6.4访问组件
一个游戏对象可能由若干组件构成。
Transform用于定义对象在场景中的位置、角度、缩放参数;
Mesh Filter用来从资源文件中读取模型;
Mesh Renderer用来在场景中渲染Player1模型;
常用的组件及其对应的变量
Transform,transform
Rigidbody,rigidbody
Renderer,renderer
Light,light
Camera,camera
Collider,collider
Animation,animation
Audio,audio
如果游戏对象上不存在某组件,则该组件对应变量的值将为空值null。
组件引用函数
GetComponet
GetComponets
GetComponetInChildren
GetComponetsInChildren
这几个函数比较耗时,因此应尽量避免在Update中调用这些获取组件的函数,而是应该在初始化时把组件的引用保存在变量中。
在Unity中,用户可以通过如下几种方式来访问游戏对象:
1、通过名称来查找:使用函数GameObject.Find
2、通过标签来查找:GameObject.FindWithTag
也是比较耗时的函数调用,因此不建议在Update中调用它们。
13.7.5 Coroutine协同程序
Coroutine也称为协同程序或者协程,协同程序可以和主程序并行运行,和多线程有些类似,但是在任一指定时刻只会有一个协同程序在运行,别失的协同程序则会挂起。
Unity里和协同程序有关的函数有:
StartCoroutine:启动一个协同程序
StopCoroutine:终止一个协同程序
StopAllCoroutines:终止所有协同程序
WaitForSeconds:等待若干秒
WaitForFixedUpdate:等待直到下一次FixedUpdate调用
在C#中,协同函数的返回类型必须为IEnumerator,yield要用yield return来替代,并且启动协同程序用StartCoroutine函数。
【  
用Coroutine定期执行函数并且独立于帧率
如果我们可以每5秒才检测某些数据,然后把逻辑移出Update就可以节省性能消耗。
coroutine是一个可以挂起其执行直到yield操作完成的函数。
实现在帧率外定期执行函数:
public class TimedMethod: MonoBehaviour{
  void Start()
  {
   StartCoroutine(Tick());
  }
 IEnumerator Tick()
 {
                float delaySeconds=5.0F;
                while(true){
                    print("tick "+Time.time);
                    yield return new WaitForSeconds(delaySeconds);
                }
 }
}

chap14输入与控制
处理用户的输入是游戏交互的基础。Unity提供了一个非常易用和强大的用于处理输入信息的类:Input,它可以处理鼠标、键盘、摇杆/方向盘/手柄等游戏外设,也可以处理iOS/Android等移动设备的触摸输入信息。程序员通过编写脚本接收输入信息,完成与用户的交互。
在编写处理输入的脚本时,需要注意Unity所有输入信息的更新是在Update方法中完成的,因此和输入处理相关的脚本都应该放在Update方法中。
在Input类中,Key与物理按键对应,例如键盘、鼠标、摇杆上的按键,其映射关系无法改变,可以通过按键名称或者按键编码KeyCode来获得其输入状态。例如,GetKeyDown(KeyCode.A)会在按A键时返回true。
Button是输入管理器Input Manager中定义的虚拟按键,通过名称来访问。
输入轴Axis用来模拟平滑变化的输入,如摇杆的变化、方向盘的转动等,需要在输入管理器中配置。它包含正负两个虚拟按键。
在Unity中,鼠标位置用屏幕的像素坐标表示,屏幕左下角为坐标原点(0, 0),右上角为(Screen.width,Screen.height),其中Screen.width为屏幕分辨率的宽度,Screen.height 为屏幕分辨率的高度。
mousePosition的变量类型为Vector3。
GetMouseButtonDown、GetMouseButtonUp、GetMouseButton这3个方法需要传入参数来指定判断哪个鼠标按键,0对应左键,1对应右键,2对应中键。
Unity可以处理摇杆、游戏手柄、方向盘等标准游戏外设的输入。
虚拟按键需要在输入管理器中配置,把外设的输入消息映射给虚拟按键或输入轴以后,就可以在脚本中使用了。
Unity默认为用户创建了若干映射了摇杆按钮的虚拟按键,包括Fire1、Fire2、Fire3、Jump以及虚拟轴Horizontal和Vertical,可以在脚本里直接使用它们。
在iOS和Android系统中,操作都是通过触摸来完成的。
通过GetTouch或者touches可以访问移动设备的触摸数据,数据保存在Touch的结构体中。
使用虚拟按键的好处是可以让游戏玩家自由定义按键,满足个性化的操作习惯。
虚拟按键属于输入轴的一种特殊情况,在输入管理器中,都统一视为输入轴。

Unity中编写Shader的语言叫做ShaderLab,而ShaderLab说白了就是裹着一层皮的CG着色器语言而已。Cg,即C forgraphics,即用于图形的C语言,是微软和英伟达相互协作在标准硬件光照语言的语法和语义上达成的一种一致性协议。
HLSL和CG其实是同一种语言。
在Unity中写Shader约等于给DirectX写Shader。
chap16 Shader开发
简单来说,Shader是为渲染管线中的特定处理阶段提供算法的一段代码。Shader是伴随着可编程渲染管线出现的,Shader的出现可看作是实时渲染技术的一次革命。
Unity中所有的渲染都需要通过Shader来完成,开发者可以自己编写Shader,也可以使用Unity提供的内建Shader来实现各种画面效果。
本章将介绍Unity中的内建Shader、ShaderLab语言,以及简单的表面着色器(Surface Shader)和顶点片段着色器(Vertex & Fragment Shader)的编写方法。
16.1内建Shader介绍
Unity提供了数量超过60个的内建Shader,包括从最简单的顶点光照效果到高光、法线、反射等游戏中最常用的材质效果。
 内建Shader根据应用对象可以分为如下几大类:
普通(Normal Shader Family):用于不透明的对象
透明(Transparent Shader Family):用于透明对象
透明缕空效果(Transparent Cutout Shader Family):用于包含完全透明部分的半透明对象
自反光(Self-llluminated Shader Family):用于有发光效果的对象
反射(Reflective Shader Family):用于能反射环境立方体贴图的不透明对象
游戏开发者需要在游戏画面和游戏性能之间做出平衡。
16.2Unity里的三种自定义Shader
编写Shader需要对OpenGL或者Direct3D的渲染状态有基本的了解,以及一些关于固定功能管线、可编程管线、Cg/HLSL/GLSL编程
语言的知识。
在Unity中,开发者可以编写3种类型的Shader:
表面着色器:可同时正常工作在前向渲染及延迟渲染模式下。以Cg/HLSL语言进行编写。
顶点和片段着色器:同样是用Cg/HLSL语言来编写。
固定功能管线着色器:完全以ShaderLab语言编写,类似于微软的Effects或是英伟达的CgFX。
无论编写哪种Shader,实际的Shader代码(比如Cg/HLSL代码)都需要嵌入在ShaderLab代码中,Unity需要通过ShaderLab代码来组织Shader结构。
NewShader.shader的示例代码:
Shader "Custom/NewShader" {//Shader的名称
 Properties {
  _Color ("Color", Color) = (1,1,1,1)
  _MainTex ("Albedo (RGB)", 2D) = "white" {}
  _Glossiness ("Smoothness", Range(0,1)) = 0.5
  _Metallic ("Metallic", Range(0,1)) = 0.0
//在这里定义Shader中使用的属性,例如颜色,向量,纹理
 }
 SubShader {
//在这里编写Shader的实现代码
//包括表面着色器、顶点和片段着色器的Cg/HLSL代码
//或者是固定功能着色器的ShaderLab代码
  Tags { "RenderType"="Opaque" }
  LOD 200
  
  CGPROGRAM
  // Physically based Standard lighting model, and enable shadows on all light types
  #pragma surface surf Standard fullforwardshadows
  // Use shader model 3.0 target, to get nicer looking lighting
  #pragma target 3.0
  sampler2D _MainTex;
  struct Input {
   float2 uv_MainTex;
  };
  half _Glossiness;
  half _Metallic;
  fixed4 _Color;
  void surf (Input IN, inout SurfaceOutputStandard o) {
   // Albedo comes from a texture tinted by color
   fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
   o.Albedo = c.rgb;
   // Metallic and smoothness come from slider variables
   o.Metallic = _Metallic;
   o.Smoothness = _Glossiness;
   o.Alpha = c.a;
  }
  ENDCG
 } 
 FallBack "Diffuse"
}
chap18工作流程
在很多类型游戏的制作过程中,开发者都会考虑一个非常重要的问题,即如何在游戏运行过程中对资源进行动态的下载和加载。为此,Unity引擎引入了AssetBundle这一技术来满足开发者的上述需求。
AssetBundle是Unity引擎提供的一种用于存储资源的文件格式,它可以存储任意一种Unity引擎能够识别的资源,例如模型、纹理、音频、动画片段甚至整个场景等。同时,AssetBundle也可以包含开发者自定义的二进制文件,只需将二进制文件的扩展名改成.byte,Unity引擎即可将其识别为TextAsset,进而可以被打包到AssetBundle文件中。
一般情况下,AssetBundle的工作流程大致如下:
1、开发过程中,开发者创建好AssetBundle文件并上传至服务器上。
创建AssetBundle:开发者可以在Unity编辑器中通过脚本来创建满足要求的AssetBundle文件。
上传至服务器:开发者创建好AssetBundle文件后,即可通过上传工具(比如FTP等)将其上传至服务器中,从而使游戏通过访问服务器来获取所需的资源。
2、游戏运行时,客户端会根据实际需求从服务器上将适当的AssetBundle下载到本地机器,再通过加载模块将其资源加载到游戏中。
下载AssetBundle:Unity提供了一套完整的API供开发者使用,从而完成从服务器端下载AssetBundle文件。
加载AssetBundle中的Assets:AssetBundle文件一旦下载完成,开发者即可通过特定的API来加载其所包含的Assets,包括模型、纹理、动画片段等。
18.1AssetBundle
用户可以通过脚本在Unity编辑器中创建AssetBundle文件,Unity引擎提供了3种创建AssetBundle的API,分别如下:
BuildPipeline.BuildAssetBundle
通过该接口,开发者可以将编辑器中任意类型的Assets打包成AssetBundle文件。
BuildPipeline.BuildStreamedSceneAssetBundle
通过该接口,开发者可以直接将项目中的一个或若干个场景以流式加载的方式打包成AssetBundle文件。
BuildPipeline.BuildAssetBundleExplicitAssetNames
该接口功能与BuildPipeline.BuildAssetBundle接口相同,但创建时可以为每个Object指定一个自定义的名字
18.2如何下载AssetBundle
Unity引擎提供了两种方式来从服务器上动态下载AssetBundle文件,分别是非缓存机制和缓存机制。
1、非缓存机制
通过创建一个WWW实例来对AssetBundle文件进行下载。下载后的AssetBundle文件将不会进入Unity引擎特定的缓存区。
2、缓存机制
通过WWW.LoadfromCacheorDownload接口来下载AssetBundle文件。下载后的AssetBundle文件将自动被存放在Unity引擎特定的缓存区内,该方法是Unity推荐的AssetBundle文件下载方式。
18.3AssetBundle的加载与卸载
18.3.1如何加载AssetBundle
当把AssetBundle文件从服务器端下载到本地之后,需要将其加载到内存中并创建AssetBundle文件内存对象。Unity提供了3种方式来加载AssetBundle文件:
1、WWW.assetbundle属性
可以通过WWW.assetbundle属性来创建一个AssetBundle文件的内存对象。
2、AssetBundle.CreateFromFile
通过该接口可以从磁盘文件创建一个AssetBundle文件的内存对象。需要注意的是,该方法仅支持非压缩格式的AssetBundle,即在创建AssetBundle时必须使用UncompressedAssetBundle选项。
3、AssetBundle.CreateFromMemory
通过该接口可以从内存数据流创建AssetBundle内存对象。例如,当用户对AssetBundle进行加密时,可以先调用解密算法返回解密后的数据流,然后通过AssetBundle.CreateFromMemory从数据流创建AssetBundle对象。
需要特别注意的是,如果AssetBundle之间存在依赖,则必须严格按照依赖顺序加载AssetBundle文件。
18.3.2如何从AssetBundle中加载Assets
当AssetBundle文件加载完成后,就可以将它所包含的Assets加载到内存中。Unity提供了3种加载API供开发者使用,它们分别是:
AssetBundle.Load
该接口可以通过名字来将AssetBundle文件中包含的对应Asset加载到内存中,也可以通过参数来指定加载Asset的类型。
AssetBundle.LoadAsync
该接口的作用与AssetBundle.Load相同,不同的是该接口是对Asset进行异步加载,即加载时主线程可以继续执行,所以该方法适用于加载一个较大的Asset或者
同时加载多个Assets。
AssetBundle.LoadAll
该接口用来一次性加载AssetBundle文件中所有的Assets,同AssetBundle.Load一样,可以通过指定加载Asset的类型来选择性地加载Assets。
18.3.3如何从场景AssetBundle中加载Assets
18.3.2中介绍了如何从普通的AssetBundle文件中加载Assets。
Application.LoadLevel
Application.LoadLevelAsync
Application.LoadLevelAdditive
Application.LoadLevelAdditiveAsync
18.3.4如何卸载AssetBundle
Unity提供了AssetBundle.Unload接口来卸载AssetBundle文件。

chap19脚本调试与优化
Unity自3.0版本之后,开始支持使用MonoDevelop编辑器对脚本进行调试,具体的调试方法如下:
1、启动Unity应用程序,按Ctrl+N组合键,新建一个空场景。
2、在Unity中,依次打开菜单栏中的Edit|Preferences|External Tool项,弹出Unity Preferences对话框,将ExternalScript Editor设置为MonoDevelop(builtin)。
3、设置完成后,打开MonoDevelop脚本编辑器。在该编辑器中,依次打开菜单栏中的Tools|Options|Unity|Debugger项,弹出如图所示的调试设置对话框。
4、在Editor Location中设置Unity.exe文件所在的路径,勾选Launch Unity automatically与Build project inMonoDevelop,单击右下角的OK按钮完成配置。
5、脚本调试是调试代码的过程,为了调试方便,在Unity的Project界面中新建Count.cs文件,把该代码绑定至Main Camera对象上。右击该代码文件,在弹出的菜单中选择Sync MonoDevelop Project项。
6、用MonoDevelop打开Count.cs文件,为sum+=i该行代码设置断点(设置断点只需要在该代码行的行号前单击即可设置),并在下拉框中选择Debug模式。
7、在开启Debug模式之前需要关闭Unity编辑器。开启Debug模式可以单击Debug按钮也可以按F5键,开启后可以看到Unity编辑器重新启动,这就是刚刚勾选Launch Unity automatically的原因,它能在开启Debug模式之后自动重新启动Unity界面。单击Play按钮进行测试。
8、单击Count按钮,MonoDevelop的状态如图所示。
9、从左下角的Locals视图中可以知道,Count类绑定在了Main Camera上,并且i变量的结果与sum变量的结果都为0。
10、在实际项目中如果由于调试原因需要关闭Unity,则显得不太实际。下面介绍另一种脚本调试的方法。打开MonoDevelop中的Run|Attach to Process,弹出图所示的对话框。
11、此时选择Unity的进程(3592 Unity Editor),单击右下角Attach按钮,此时Unity Editor与MonoDevelop脚本编辑器已经连接。返回至Unity Editor中,单击Play按钮进行测试,单击Game视图中Count按钮,此时MonoDevelop脚本编辑器的状态如图所示。
3个按钮(从左到右)分别代表:
Step Over:调试时按照一行一行调试,单击该按钮一次执行一行。
Step Into:如果当前箭头所指的代码有函数的调用,则用StepInto进入该函数进行单步执行。
Step Out:如果当前箭头所指向的代码是在某一函数内,用它使函数运行至返回处。
chap20跨平台发布
20.2发布到Android平台
在发布Android项目之前,开发人员需先下载并安装JavaSDK和AndroidSDK。本书中所用的Java SDK为7.0版本,Android SDK为21.1版本。
20.2.1 Java SDK的环境配置
1.在桌面“我的电脑/计算机”图标上右击,依次打开属性|高级系统设置|环境变量选项,进而弹出“环境变量”配置对话框。
2.检查系统变量下是否有JAVA_HOME、path、classpath这3个环境变量,如果没有则需要新建这3个环境变量。
含义:
JAVA_HOME环境变量:其设置值就是jdk所在的安装路径
path环境变量:其设置值为%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
classpath环境变量:其设置值为.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar 
3.为了验证配置是否成功,可以打开系统的命令提示符,在DOS命令行状态下输入javac命令。
20.2.2 Android SDK的安装与项目发布
1.确认已经完成Android SDK的安装后,需要对Android SDK进行环境变量的配置。
新建环境变量ANDROID_SDK_HOME,变量值输入Android SDK所在的安装路径。
找到path环境变量:在变量值里添加两个路径:%ANDROID_SDK_HOME%\platform-tools与%ANDROID_SDK_HOME%\tools。
配置完上述的参数后,进入命令提示符状态,输入adb。
20.3 iOS平台的发布
20.3.1发布前的准备工作
需要Mac苹果计算机以及iOS测试机(例如iPhone、iPod touch或iPad),并且在Mac计算机上安装了Xcode开发工具,另外还需要一个注册好的Apple苹果开发者账号,并且配置好相关的证书。
20.3.2发布iOS平台的设置
20.3.3项目工程输出与发布

20160226添加:
http://pan.baidu.com/s/1G703W 密码: trjc
http://wenku.baidu.com/link?
url=UoWAJzM80ZwTOjU7PWrf8vrkByZDhObdvytPNkDTDkqxLuOKbCz2FriEIPrE10vOrBAUdWDUAA1rc4nHFM6yJHupg-1g9lyifb2ABhWt4JS
台湾大宇资讯集团原创制作
1995年7月首款作品DOS版发行。
仙剑奇侠传
仙剑奇侠传二
仙剑奇侠传三、仙剑奇侠传三外传·问情篇
仙剑奇侠传四
仙剑奇侠传五、仙剑奇侠转五前传
2004年被改编成同名电影。
仙剑之父:姚壮宪(姚仙)
仙剑二,单机游戏,于2003年1月上市
仙剑三,3D画面在仙剑系列中首度出现,2003年8月出品
仙剑三外传,2004年冬天出品
仙剑四,单机游戏,2007年8月1日发售
仙剑五,单机游戏,于2011年7月上市
仙剑五前传,单机游戏,于2013年1月上市

江西泰豪动漫职业学院毕业设计(论文)
龙建:炸弹人游戏的制作(2015.5.15)
开发游戏类型
5种:
1.1.1动作游戏ACT
包括射击游戏STG和格斗游戏FTG
1.1.2冒险游戏AVG
1.1.3模拟游戏SIM或SLG
1.1.4角色扮演游戏RPG
1.1.5策略游戏
1.1.6休闲游戏

1997年,美国暴雪公司发布《Diablo》(暗黑破坏神),属于RPG角色扮演游戏中的ARPG动作角色扮演游戏。
http://wenku.baidu.com/link?url=IaIRE6Cikfmc7vVO9oM0L6sUeJn2P_7Hp2JEQj7_lZahC007TMEDcIY7AT3AGQO0iVhOPxSv-
6qvr6aA7H5lJkWylGxRHIzgnzSLl5b41tG
论民间文化元素在电脑游戏创作中的运用——以网络游戏《暗黑破坏神》为例
http://www.docin.com/p-365976240.html
14个游戏类型:
ACT动作游戏
AVG冒险游戏
FPS第一人称视点射击游戏
FTG格斗游戏
MUG音乐游戏
PUZ益智类游戏
RAC赛车游戏
RPG角色扮演游戏
RTS即时战略游戏
SLG模拟/战旗式战略游戏
SPG体育运动游戏
STG射击游戏
TAB桌面游戏
ETC其他类型游戏
周庆明:暗黑破坏神2游戏分析(2015.5.18)
http://www.docin.com/p-1479595671.html
游戏名称:暗黑破坏神2
游戏类型:动作RPG
游戏平台:PC/MAC
游戏操控设备:键盘,鼠标
游戏图像技术:3D
游戏玩家视角:60度倾斜
游戏操作:
功能|热键
属性窗口|A
物品窗口|I
组队窗口|P
聊天记录|M
任务列表|Q
帮助窗口|H
技能树|T
快捷技能键|S
技能1|F1
……
技能8|F8
选择上一个技能|Mouse Wheel Up
选择下一个技能|Mouse Wheel Down
显示快捷物品栏|~
使用快捷物品栏1|1
……
使用快捷物品栏4|4
聊天|Enter
奔跑|Ctrl
切换 走/跑|R
停止|Shift
显示物品|Alt
显示肖像|Z
自动地图|TAB

】 
1.4开发环境
32位Win7+Unity4.3.0+C#+VS2012
2.3添加美术资源
把用到的UI资源和场景背景以及敌机和主角战机等等通过TexturePackerGUI工具打包成图集,然后导入工程中。
把工程中图集的参数改成和图集一样的分辨率,Format改成ARGB 16bit。
2.5添加音乐音效
游戏按钮点击音效的表现,子弹发射的音效表现,子弹和敌机爆炸的音效表现以及游戏音乐表现。
1、主角获得道具
public class Daoju:MonoBehaviour{
//道具类型
public enum leixing
{
zhadan,
HP,
xiezi,
weili,
}
public leixing myleixing;
//如果主角进入触发器调用主角方法获得道具
void OnTriggerEnter(Collider other){
if(other.collider.tag=="Player")
{
other.GetComponent<Player>().Daoju(myleixing);
Destroy(gameObject);
}

}
}

相机:
public class MyCamera : MonoBehaviour  
//移动速度
public float sp=1; 
//主角
public Transform play;
//相机移动位置限制
public float maxX=19.5f,minX=3.5f,maxZ=21,minZ=2; 
//相机离主角高度距离
float distance=5;

// Use this for initialization 
void Start ()  
  transform.position=play.position+new Vector3(0,distance,0); 
 
void LateUpdate() { 

 
void V()  

}

UI功能:
//状态,主要用来按暂停键的时候暂停游戏
public enum UIzhuangtai
{
kai,
shezhi,
zhangting,
siwang,
yunxing
}
public UIzhuangtai myUIzhuangtai{get;set;}
//各种按钮
public GameObject kaishi,shezi,tuichu,fanhui,shuxing,tuichu_1,zhangting;
//开始,设置,属性面板
GameObject kaishigame,shezigame,shuxinggame;
//灯光
public Light light;
//用来控制背景音乐音量
AudioSource audio;
//属性UI
[HideInInspector]
public UILabel HP,weili,zhadan,xiezi,defeng,guaiwu;
//小地图相机
public Camera xiaoditecamera; 
Transform move;

UICheckbox isditu,isyinxiao;
public bool yinxiao
{
get;
set;
}
UISlider dengguang,yingyin,beijing,xiangji;
public UILabel guankalabel;

void Awake()
{
kaishigame= transform.Find("开始菜单").gameObject;
shezigame= transform.Find("设置").gameObject;
isditu=shezigame.transform.Find("小地图").GetComponent<UICheckbox>();
isyinxiao=shezigame.transform.Find("音效").GetComponent<UICheckbox>();
                dengguang=shezigame.transform.Find("灯光").GetComponent<UISlider>();
                shuxing= transform.Find("属性").gameObject;  
                xiezi=shuxing.transform.Find("鞋子").GetComponent<UILabel>();
}
炸弹:
//上下左右四个方向放置火焰
List<Transform> shang=new List<Transform>();
List<Transform> xia=new List<Transform>();
List<Transform> zuo=new List<Transform>();
List<Transform> you=new List<Transform>();
//自己的位置
public Transform ray;
//爆炸音效
public AudioClip baozha;
//火焰预制件
public GameObject h;

 
数据驱动式游戏开发管道
Unity编辑器及其工作流程:最好的~。
引擎功能
渲染系统:多线程渲染,延迟渲染,全屏后处理,遮挡剔除,LOD
灯光系统:延迟灯光处理,实时阴影,SSAO,体积光,光照贴图,HDR,Light Probes
输入控制:键盘、鼠标、360手柄,手机触摸输入
地形系统:刷地形,刷纹理,树,草,石块,水,河流,道路
物理系统(PhysX):刚体,铰链,软物体,玩偶,汽车物理模型,服装(物理)模拟
粒子特效:烟、雾、火、爆炸、雨、雪、水、瀑布
音响系统:FMOD,WAV,MP3
脚本系统:JavaScript,C#,Boo
寻路系统:NavMesh
网路支持:Real-time networking、Web connectivity、Web browser integration、Backend connectivity
性能分析系统:CPU & GPU Profiler
编辑器功能
资源集成及其管理:Prefab,游戏物体组合
场景建模
资源管道
资源商店
资源管理服务器(Asset Server+Cache Server)
编辑器的拓展(plug-in)
性能分析

基于Unity新UI系统的游戏界面开发实现
2、Unity新UI
2014年11月,Unity4.6正式版推出了新的UI系统。
其主要特点包括:
(1)不仅可以在屏幕空间中创建透视或非透视的UI,而且也可以在世界空间中轻松地创建交互。
(2)布局系统不仅支持与边、角点的对齐,而且支持与父容器中自定义点的对齐。
(3)可以基于图片、文字以及掩码和效果等构建自定义空间。所有的图形组件都完全支持自定义的材质和光线。 
(4)内置了很多为跨平台发布而设计的控件,包括按钮、滑动条、滚动视图、输入区域等。支持触摸控制,以及鼠标、键盘、摇杆等输入设备。
(5)UI系统中集成了Unity的动画系统。可以使用状态机或者其他动画特性来控制UI元素和面板。
(6)UI系统是可扩展的。
(7)使用C#中的delegate委托机制,可以很容易地在监视视图中建立UI控件的事件回调函数。
3、UI控件
3.1Canvas画布
画布组件表示一个摆放和渲染所有UI元素的抽象平面区域,所有UI元素必须是一个拥有画布组件的游戏对象的子对象。
画布有三种渲染模式:
(1)屏幕空间覆盖:在屏幕空间中将UI渲染在场景之上。调整屏幕大小或改变屏幕分辨率,则画布会自动改变大小以进行匹配。
(2)屏幕空间相机:类似于屏幕空间覆盖,但画布由一个特定的相机渲染,相机的设置会影响UI。
(3)世界空间:使画布像场景中的其他对象一样被渲染。
3.2基本布局
本节介绍如何确定UI元素相对于画布的位置以及UI元素之间的相对位置。
3.2.1 Rect Tool矩形工具
在Unity中,每一个UI元素都用一个矩形来表示,这样可以方便地进行布局。在场景视图中可以使用工具栏中的矩形工具按钮来操纵该矩形。
矩形工具不仅可以用于调整UI和Unity的2D对象,甚至还可以用来操作3D对象。
3.2.2Rect Transform矩形变换
矩形变换是为所有的UI元素而设计的一个新的transform组件。
矩形变换是除了具有普通transform组件的position、rotation和scale属性之外,还增加了用来表示矩形大小的width和height。
3.2.2.1 Pivot中枢点
UI元素的所有变换是围绕中枢点来定义的,因此中枢点的位置会影响UI元素的旋转、定位和缩放的结果。比如,当设置UI元素的位置时,实际上设置的是中枢点的位置;对UI元素进行旋转时,围绕的是中枢点。
3.2.2.2Anchors锚点
矩形变换组件包含一个称为锚点的布局概念。
3.3可视控件
3.3.1Panel面板
主要的功能就是一个“容器”。
3.3.2Text文本
3.3.3Image图片
在使用该控件时,要求图片的纹理类型必须是Sprite(2D and UI)。
Sliced类型表示图片需要在Sprite Editor中进行“九宫格”切片后才可以应用。
3.4交互控件
3.4.1Button按钮
3.4.2Slider滑动条

 



1.3.2手机硬件的多样性
Apple处理器A7是2013年9月11日发布的。
iPhone5s率先采用A7处理器。
A7处理器,采用的是64位构架。
ARM架构称作进阶精简指令集机器。
4.7建立“开始”按钮
4.7.1建立按钮本体
相对于自适应分辨率的设置,锚点和支点的理解更为重要。
注意:在新的UI系统中可以轻松地控制UI元素的层,Unity默认渲染Canvas内的第一个项目,整个渲染从上至下,因此Canvas中的最后一个物体被最后渲染,最后渲染的物体就会显示在整个视图的最顶层,而之前被渲染的UI元素依照顺序进行相应的分层。
4.7.2控制按钮文字组件
4.7.3将按钮设置为图形
将StartGame图形使用鼠标左键拖曳至按钮元素的Source Image通道中
4.9按钮与触发事件JavaScript语言脚本
按钮按下时需要调用脚本中的函数来实现相应的功能。
UiStart.js
#pragma strict
function OnClick(){
print('go');
}
将这个脚本挂在空物体GUI上,GUI拖曳给“On Click ()”一栏中的空置处,接着打开“On Click ()”一栏中的No Function选项,在此选项中选择脚本UiStart.js的OnClick函数。
4.10按钮与触发事件C#语言版本
注意:C#函数必须加入public,这样UI才能够识别。
chap5 使用Unity 3D建立次世代级别的烘焙环境
5.1在3D软件中制作针对手游的场景模型
5.1.1手机游戏场景应该怎样建立
1、关卡类型的设置
杀戮性质关卡、拯救类型关卡、防御类型关卡
2、战斗角度的设置
3、场景中的特别效果
5.1.2从图片建立一个建筑物
5.1.3让多个建筑物之间形成关联
5.1.4使用不同的元素构架整体场景
5.1.5面数的分配与贴图的大小
场景面数控制在3W四边面左右就可以流畅运行。
贴图的大小与数量直接影响游戏运行内存的占用。手机游戏尽量不要使用2048以上的贴图,控制贴图大小为正方形,类似512*512;1024*1024这样的尺寸。
单一游戏场景中512以上尺寸的贴图尽量控制在10张左右,如果使用1024以上的贴图尽量控制在6张左右,小型贴图例如256、128尺寸的图片可以配合大型贴图使用10张左右。
5.2导入Unity3D并设置
5.2.1如何将模型分类
游戏中大致的模型可以分为两类:固定模型和动画模型。
5.2.2合并动画专用模型

chap9 利用Unity 3D构建角色控制系统
9.1传统第三人称虚拟摇杆控制系统
9.1.1导入Unity官方脚本包
在触碰屏上建立角色操作系统与在传统平台上相比最大区别是:
需要虚拟摇杆的支持。首先在Unity中导入官方默认的Standard Assert(Mobile),在Assets菜单中Import Package子菜单中单击Standard Assert(Mobile)按钮,导入后可以在项目视图中看到。
9.2利用插件构建角色分屏操作系统
9.2.1在Unity中导入分屏插件
评论列表暂无评论
发表评论