SlideShare a Scribd company logo
1 of 145
初阶




              v 0.8.0
 更 新 : 2 0 1 3 - 0 1 - 11
教程说明
   概念介 绍
     对游戏开发中的一些概念和基本应用进
     行简要说明。

   Uni ty 实践
     在Unity中的使用方法和注意事项。
游戏生产线概要

艺术内容制作   艺术内容导出   游戏内容制作




游戏内容构建   游戏内容打包   游戏内容加载




游戏内容表现
游戏开发与Unity实践
游戏对象(Game Object)
介绍



游戏对象


   游戏对象是对场景中物体进行管理的基本单
    元。
   通过游戏对象可对场景中的物体进行定位、
    查找、访问等操作。
   对象有级联关系,对一个对象的操作会影响
    到其子对象。如,移动一个对象,其子对象
    也跟随其移动。
在Unity中



游戏对象


   游戏对象在”Hierarchy”中管理。
   所有的游戏对象及其所引用的资源,会被
    构建入游戏数据中。
在Unity中



游戏对象 – 主要属性


   Transformation
     物体的位置、旋转、缩放属性。

   Parent
     其层级关系中的父对象。
在Unity中



游戏对象 – 主要方法


   Start()
     对象被实例化后执行一次。

   Update()
     对象被激活后,每帧执行。
部件(Component)
介绍



部件


   类似于插件概念的模块化的结构
   游戏对象需要哪些特性,就把对应的部件
    挂上去。
   如Collision、Audio Source、Light、
    Material等。
在Unity中



部件


   选中一个Game Object,从Component菜
    单中可以添加一个所需的Component到这
    个Game Object上。
游戏开发与Unity实践
Assets
介绍



Assets


   Assets可理解为用于制作、加工游戏所需
    的各类源数据。
   这些数据不会被直接构建入游戏,即这里
    数据的多少不会对游戏应用的大小有影响。
   制作游戏(场景)时需要哪些数据,从
    Assets中选取、构建。
在Unity中



Assets


   Asset在“Project”中管理。
   将资源文件放置Asset目录下,Unity回自
    动检测并将其导入”Project”中。
Prefab
介绍



Prefab


   Prefab是Asset的一种。
   Prefab相当于游戏对象的模版,对于有相
    同或者相似特性的游戏对象,可以用
    Prefab来对其实例化,这样就不用反复的
    配置其属性。
在Unity中



Prefab


   可将Game Object实例直接拖到Asset中,就会
    自动生成一个Prefab。
   如果一个对象引用其它对象,被引用的对象又不
    在Prefab中,生成Prefab后引用关系会丢失。
   用Prefab实例化多个游戏对象,如果修改Prefab
    的属性,这些游戏对象的属性也会跟着改变。
数据加载
介绍



数据加载 – 打包


   说明
     在Build游戏数据时,应将游戏(编辑期)数据打
     包,即将零散的数据资源打入一个或多个压缩包中。

   目的
     数据加密。

     压缩数据,节省应用尺寸。

     提高加载速度。
介绍



数据加载 – 序列化


   说明
     将数据转换为其在运行时内存中的格式,这样数据
     只需从文件加载入内存即可直接使用,而不用对加
     载进来得数据进行解析,也不需要用解析出来的数
     据来逐成员的构造和初始化游戏对象。

   目的
     提高数据加载与游戏初始化速度。
介绍



数据加载 – 同步


   在主线程中一次性的(在一个loop中)执
    行完所有加载逻辑。
   如果界面也在调用加载操作的线程中,在
    加载过程中界面将停止更新与响应。
介绍



数据加载 – 异步


   多线程
     即多线程的加载,不影响其它逻辑的执行,如
     界面渲染、输入操作等。

   “伪”异步
     自己管理资源加载,即在循环中一次加载一个
     或者一批资源,保证每个循环CPU可以执行其
     他的逻辑。
在Unity中



数据加载 -
Hierarchy中的资源

   普通的(即不通过Resource或WWW)场
    景资源加载时,Hierarchy中的Game
    Object及其所引用的Project中的资源会被
    自动的全部加载进内存。
在Unity中



数据加载 -
Resources

   Resource目录下所有资源被打成一个包
    中。
   可以有选择的加载数据到内存中。
在Unity中



数据加载 - WWW


   可将不同数据打成不同的包,在运行时动
    态加载。
   可从web上下载并加载包,也可加载本地
    的包。
游戏开发与Unity实践
模型(Model)
介绍



模型 – 顶点


   顶点(位置)信息(x,y,z)所使用的数据类型
    决定精度和数据大小。
   提示
     要考虑好场景中模型的最大尺寸和最小尺寸,顶点
     数值过小或过大都会引起精度丢失问题。
     精度丢失可能会引起Z闪烁。

     “大尺寸”数据类型比较占用内存。
介绍



模型 – 法线


   法线属性可以表现表面方向,影响物体的
    光影效果。
   提示
     如果某个面的一块很黑,打灯光也无法照亮,
    可以考虑现在数据中检查一下模型法线。
介绍



模型 - UV


   顶点与贴图的坐标映射。
介绍



模型 – 顶点色


   记录顶点的颜色。
   通常用于静态光照,也可用于多层贴图混
    合。
介绍



模型 - Index


   多边形是有方向的,Index的顺序决定面
    的方向。
介绍



模型 – 备注


   顶点的数量直接影响模型精细度和顶点色
    过渡的细致程度。
   (可见的)模型的面的数量对渲染性能有
    直接影响,对于目前大多数设备(PC、
    Console、Pad等),应将其控制在几万
    到几十万(<30万)之间。
在Unity中



模型 – 使用


   将模型文件放置Asset目录中的某个位置,
    Unity会自动检测并将其导入到“Project”中。
在Unity中



模型 – 模型文件


   支持的格式有fbx, collada, ma等。
   FBX - Autodesk的一种数字内容文件格式,
    很多数字内容制作工具都支持对这种格式
    数据的导入、导出。
   Unity支持Maya文件导入,但需要安装
    Maya。
贴图(Texture)
介绍



贴图


   为游戏中的元素的颜色显示或者运算提供
    颜色输入。例如,模型表面的图像,用于
    运算材质的颜色,用户界面上的图像等等。
介绍



贴图 – 格式


   Tga – 32位,有8位Alpha通道。
   Png – 压缩格式,有透明色。
   Jpg – 压缩格式,无半透。
   DXT – 有不同的压缩格式。
介绍



贴图 – 尺寸


   不同的设备对渲染用贴图的尺寸有所限制。
   如某些设备上要求贴图宽高是2的幂;有
    些设备将最大尺寸限制到2048*2048。具
    体限制请查看文档。
介绍



贴图 - Mipmap


   如果场景有纵深,mipmap可让远处贴图
    看着不“花”(这是由多个贴图像素投影到
    同一个屏幕像素上造成的)。
   并且可提高渲染性能。
介绍



贴图 – 优化


   对于3D游戏,贴图通常都是游戏内存使
    用大户,所以在贴图的使用上尽量优化的
    使用。
     不影响效果的情况下尽量使用尺寸小的格式。

     只加载需要的贴图。
介绍



贴图 – 优化举例


   可使用24位色(无半透)的就不要使用32位
    色。
   可使用压缩格式(3D物体)的就不要使用非
    压缩格式。
   渲染物体总在同一深度的就不要声称mipmap。
   颜色简单的可使用索引色。
介绍



贴图 – 打包


   将贴图打包的好处
     优化内存 – 贴图文件在内存中占用2的幂宽高的空
     间,打包后可移除这些空间。
     优化性能 - 可节省材质数量(即可优化渲染的提交
     次数)
     优化尺寸 - 减少贴图的总的大小。
     提高制作效率 - 可统一的对贴图进行格式转换等处
     理。
在Unity中



贴图


   支持的贴图文件格式
     Png, tga, jpg, psd…

   将贴图复制到Asset目录,这个贴图就可
    被导入。
   贴图压缩 – 设置贴图的压缩方式可在内存
    和CPU间进行平衡。
在Unity中



贴图 – 打包


   可选择Texture Packer对贴图进行打包。
材质(Material)
介绍



材质


   作用
     为游戏中的模型的“表面”提供属性。例如,颜色或光照的属性和
      运算、物理属性、声音属性等等,使用最为广泛的是用于渲染的
      材质。

   渲染材质的映射模式有
     Diffuse

     Normal

     Specular
介绍



材质 – Diffuse Map



   材质的漫反射颜色表示的是在所有方向平均
    反射的入射光量。 值 (1,1,1) 表示所有方向
    可以反射 100% 的入射光。 Diffuse映射从各
    个方向上看上去都不会有光影变化。漫反射
    颜色将只会在受一些无阴影的光照影响时显
    示,因为它会缩放入射光照。
介绍



材质 – Normal Map



   法线贴图可以指定每个像素的法线属性,

    它可以同时对漫反射和高光光照产生影响。
介绍



材质 – Specular
Map

   高光颜色可以表现在某个方向反射的入射光线多少。
    高光反应在您的眼睛与反射的入射光线的方向对齐的
    时候是最亮的,所以高光是根据视图进行变化的。

   法线也会影响高光,因为它会影响反射的光源方向。
    高光强度可以控制表全面的光泽或光泽程度。 非常
    高的高光强度可以表现如镜面一般的表面,而低强度
    可以表现比较粗糙的表面。
在Unity中



材质


   Unity中的材质是非Graph编辑的,只能根
    据shader进行属性设置。
   如果需要实现特殊的效果,需要写对应的
    shader文件来支持。
摄像机(Camera)
介绍



摄像机


   透视投影 – 有景深,近大远小,可参考真
    实照相机的效果。
   正交投影 – 无景深,无近大远小的效果,
    大多用于2D表现,例如GUI。
   FOV – 镜头广度,也可理解为“近大远小”
    的程度。
在Unity中



摄像机


   Projection
     投影模式 – 可设置正交投影、透视投影。

   Target Texture
     可将此摄像机中的内容渲染到一张贴图上。

     可用于实现画中画、镜面等效果。
灯光(Light)
介绍



灯光


   环境光(Ambient Light)
     照亮整个场景,无方向(或者说来自四面八方)。

   点光源(Point Light)
     灯泡的效果。

   方向光(Directional Light)
     太阳光的效果。

   聚光(Spot Light)
     舞台上聚光灯的效果。
介绍



灯光 – 备注


   尽量减少同时激活的动态光源的数量以提
    高渲染性能。
在Unity中



灯光


   Light Component
     给对象赋予Light Component,对象就具有了光照
     属性

   类型
     可设置Light Component的类型有Spot、
     Directional、Point、Area光。
     环境光在“Edit->Render Settings”中设置。
游戏开发与Unity实践
帧动画(Frame Animation)
介绍



帧动画


   帧动画是游戏开发中最主要的一种动画表现方式。
   Animation通常是指按照时间变化对某游戏对象
    及其属性进行的改变。
   帧动画可改变的内容可能包括:
     Transform属性
     颜色属性
     声音属性
     等等…
介绍



帧动画 – 应用


   物体运动 – 如场景中的机关。
   角色动画 – 如骨骼动画。
   特效表现 – 如粒子效果。
   其它特效 - 如流水、岩浆等。
在Unity中



帧动画


   Unity有个动画编辑器,点击菜单Window-
    >Animation打开。
   选中一个Game Object后,可对其绑定的
    动画进行编辑。
   Unity动画支持在指定帧处产生回调。
游戏开发与Unity实践
菜单/窗体(Menu/Window)
介绍



菜单/窗体


   控件(Control)
     可复用的界面上的元素,如按钮、滚动条、下
     拉列表等。

   事件/消息(Event/Message)
     处理用户的操作,如点击、拖拽等。
在Unity中



菜单/窗体


   NGUI
     NGUI是一款为Unity开发的GUI库,有完备的
     Menu/Window支持。
     提供了很多常用的UI控件、界面行为、事件响应。

   事件模型
     NGUI提供了一些消息脚本,将所需脚本拖到对应
     的UI对象上,就可设置此对象的事件响应。
HUD
介绍



HUD


   HUD - Head Up Display
   屏幕上向用户反馈信息的图形、文字元素。
介绍



HUD - Sprite


   HUD的一个重要的元素,其特性有:
     Transformation – 移动、旋转、缩放。

     Animation – 可通过播放帧动画来表现2D角色
     动作。
     Behavior – 各种行为表现,如淡入、淡出、翻
     转、按指定轨迹运动等。
在Unity中



HUD


   NGUI
     NGUI对HUD有很好的支持。

   行为(Behavior)
     NGUI中有个名为Tweening的脚本库,提供了
      各种用于控制UI对象如何动态变化的脚本。
在Unity中



HUD – 数据生产线


   Texture Packer
     一款贴图打包工具,可将贴图素材打包。

   Atlas maker
     生成Atlas(相当于各类Sprite的仓库)。
字体(Font)
介绍



字体 – 矢量字体


   改变字体大小不影响字体渲染效果。
   很多游戏引擎或GUI并不支持运行时预生
    成的字体。
介绍



字体 – 贴图字体


   字体样式可自定。
   文字内容、颜色可动态改变。
   不宜缩放,渲染质量会下降。
介绍



字体 – 文字贴图


   画到贴图上的文字
   可高度定制文字的样式。
   内容不能动态改变。
   适用于游戏中的小量文字使用。
在Unity中



字体 - NGUI


   NGUI支持贴图字体,可支持描边或阴影
    效果。
   字体的材质shader要使用
    Unlit/Transparent Colored。
在Unity中



字体 - 矢量字体


   ScaleForm生成支持矢量字体渲染,与
    Unity的集成正在开发当中。
   Unity的TTF导入是在编辑期预生成字体贴
    图的。
在Unity中



字体 – 生产线


   BMFont
     一款字体文件制作工具,支持简单的命令行操作。

     可导出字体描述文件(fnt)和字体贴图文件。

     Unity使用字体描述文件要将扩展名由fnt改成txt。

   Font Maker
     NGUI的字体制作工具,生成Unity中可用的数据。
游戏开发与Unity实践
文本本地化
介绍



本地化的内容


   可能需要本地化的内容有
     文字(也涉及字体)

     贴图(通常也是为了文字)

     语音
介绍



文本本地化 - 编辑工
具

   如果游戏的文字量比较大,就需要工具来辅
    助管理本地化文字来提高编辑效率。
   工具
     Excel - 很多游戏项目是用Excel进行字符串本地化
     管理。
     其它独立工具 – 也有一些第三方的本地化编辑工
     具。如POEditor、poedit等。
文本本地化 - 转换工
具

   游戏加载本地化信息需要一种比较容易解
    析的文件格式,通常就需要有工具将本地
    化文本数据进行格式转换。
文本本地化 – 文本提
取工具

   对于有的项目,游戏中可能有大量的文本信息,
    并且在开发过程中文本信息经常变动,这就需要
    有工具能将代码中的文本提取出来合并到文本本
    地化信息库中去。
   此类工具有xgettext等。
在Unity中



文本本地化


   NGUI支持Label的本地化,但不方便大量
    文本的本地化编辑。
   第三方资源
     TextManager类 – 可加载、解析po格式的本地
     化文件。
字体本地化
介绍



文本本地化 – 贴图字
体

   启动游戏时,根据语言确定资源所在路
    径。
   如果游戏内的文字量比较大,对于像中
    文、日文等语言,字体贴图的数据量会比
    较大。
介绍



文本本地化 – 矢量字
体

   可使用矢量字库来使游戏支持某语言的字
    体。
   如果使用的文字量很少,使用字库反而会
    增加应用的尺寸。
   注,不是所有引擎都支持运行时矢量字体
    渲染。
在Unity中



文本本地化


   第三方资源
     TextManager – 可加载、解析po格式的本地化
     文件。
游戏开发与Unity实践
多分辨率支持
介绍



多分辨率支持 – 适配
策略

   完全缩放
     画面会被拉伸。

   高度、宽度适配(等比)
     两侧或上下会留空或者超出屏幕。这种情况下就要考虑
     画面的安全区。
   完全适配(等比)
     根据计算结果决定是高度还是宽度适配,使得画面内容
     完全在屏幕内。这种情况只会在两侧或上下留空。
介绍



多分辨率支持 –安全
区

   对于高度或宽度适配的模式,在不同分辨
    率的设备上能显示出来的区域会有不同,
    这样在设计的时候就要确定好最小可视区
    域,制作时要将必须显示和响应的内容制
    作到这个区域中。
在Unity中



多分辨率支持 – 适
配

   Unity没有设置项直接设置屏幕适配,需
    要写脚本来实现。
   如果使用的是NGUI,可根据情况设置
    UIRoot上的Manual Height的值。
素材适配
介绍



素材适配


   目前的移动设备分辨率差异很大,内存资源
    也有差异。大多情况下,内存资源的大小跟
    分辨率的大小有一定的关系,所以为了节省
    内存使用,可能需要根据分辨率(或者dpi)
    区分开贴图资源的加载。比如,
     大分辨率用大贴图,小分辨率用小贴图。运行时根
     据设备情况加载不同的资源。
在Unity中



素材适配 – 动态切
换

   NGUI可以在运行时切换Atlas。
   但这种方法会使内存的高峰值会较高。
   建议编辑时默认使用低分辨率资源,运行
    时按照需要替换成高分辨率资源。
   可改进生产线,编译前去掉关联,遍以后
    恢复关联。
游戏开发与Unity实践
碰撞(Collision)
介绍



碰撞


   物理材质
     影响物体间的相互作用,如摩擦力、弹性系数
     等。

   分组(空间分割)
     预知的不可能相互碰撞的物体置入不同的分组
     中,碰撞检测时就不用对这两个分组中的物体
     进行碰撞运算,以节省大量的运算。
在Unity中



碰撞


   给Game Object添加一个Collision
    Component,这个Game Object就具有了
    (被)碰撞属性。
   Unity可绑定的碰撞体有
     Box、 Sphere、 Capsule、 Mesh、 Wheel、
     Terrain
   注,Unity中无碰撞分组设置,需要在脚本中
    实现。
刚体(Rigid Body)
介绍



刚体 – 特性


   质量、速率、力、加速度、旋转。
   (参考物理学中关于刚体的说明)
   场景的尺寸对物理表现会有影响。
介绍



刚体 – 形状与性能


   球体 – 性能最高。
   立方体、圆柱体、胶囊、轮子 – 性能适中,
    通过组合可用于略复杂的物理碰撞。
   凸多边形 – 可表现任意形状的碰撞体,性
    能由面数决定,但相对来说性能最低。
介绍



刚体 – 碰撞检测类
型

   有连续碰撞和非连续碰撞检测
   如果不是连续碰撞检测,物体速度较快时
    可能会穿过另一碰撞物体。
在Unity中



刚体


   如果需要一个Game Object按照物理特性运
    动,就给这个Game Object绑定一个
    RigidBody Component。
   Mass – 质量,影响物体的碰撞效果。
   Drag – 阻滞系数,用于表现物体被空气、水
    等物质阻滞的效果。
   Constrains – 给物体某个方向上的约束。
在Unity中



刚体 – Collision
Detection

   Discrete – 性能高、适合低速运动物体,
    物体高速运动时可能穿过其它碰撞体。
   Continuous – 连续的碰撞检测,保证物体
    不会穿过其它碰撞体。但性能较低。
   Continuous Dynamic – 针对静态网格碰
    撞器(不带刚体),用于快速移动的物体。
游戏开发与Unity实践
样本(Sample)
介绍



样本 – 格式


   格式(音频文件)
     wav – 支持无压缩。
     mp3, ogg – 压缩格式。

   格式(在内存中)
     Native – 相对省CPU,但耗内存。
     Compress - 相对省内存,但耗CPU。

     具体如何选择要看内存和CPU使用情况而定。
介绍



样本 – 加载方式


   Streaming
     省内存、通道数有限;

     适合游戏音乐、语音对话等长音频。

   In memory
     性能高、费内存;

     适合短小的音效。
介绍



样本 – 立体声、单
声道

   立体声
     自身有空间感。

     适合于高质量的2D音频播放需求。

   单声道
     自身没有空间感。

     适合于3D场景中的音效播放。
在Unity中



样本


   Wav Asset,即AudioClip。
   音频格式
     Native(WAV) – 省CPU、费内存。
     Compressed(MPEG) – 省内存、费CPU。

   加载类型
     Load into memory – 预先将样本加载到内存中、播放时
     从内存播放。
     Stream from disc – 不加载样本,播放时边缓存边播放。
声源(Sound Source)
介绍



声源


   音源,用来播放样本,决定声音播放时的
    属性。
介绍



声源 – 特性


   优先级 – 所有设备可以同时播放声音的通
    道数都是有限的,当同时播放的声音太多
    时,低优先级的(通常是相对不重要的)
    声音就会被停止播放。
   音量 – 样本在播放时的音量。
介绍



声源 – 2D/3D


   2D声音跟方位、距离无关。
   3D声音更容易模拟现实(3D)世界的声音
    效果。
在Unity中



声源


   给Game Object添加Audio Source
    Component,这个Game Object就有了
    Sound Source的特性。
   可在Inspector中设置
     静音(Mute)、 优先级、 音量(Volume)、
     音调(Pitch)等。
在Unity中



声源 – 备注


   同一时刻,一个Audio Source只播放一个
    样本。但可用一个Audio Source去播放不
    同的Audio Clip。
3D Sound
介绍



3D Sound


   方位
     3D声音有方向、有位置,玩家在场景中移
    动、转向时会更身临其境。

   速度
     速度对多普勒效果产生影响。通常用于表现高
    速运动的发声体。
介绍



3D Sound – 衰减曲
线

   对数衰减 – 声音随着距离的增大,迅速减
    弱,相对接近现实世界中的声音表现。
   线性衰减 – 声音随着距离的增大,均匀的
    减弱。
   自定义衰减曲线
在Unity中



3D Sound


   要播放3D声音,首先要勾
    选Audio Clip的3D Sound
    属性。
   注,游戏场景的尺寸设定
    会直接影响到3D声音。
在Unity中



3D Sound – 衰减


   可以选择或者自定义声音衰
    减曲线。
   Max Distance决定衰减曲线
    中横轴的长度。
游戏开发与Unity实践
状态机(State Machine)
介绍



状态机


   说明
     状态机是对逻辑的模块化封装,在状态内部执
    行相应的逻辑,由外界条件触发状态切换。
     通常一个状态有:进入、执行、退出三个阶段。

   目的
     划分逻辑模块,理清逻辑关系。
介绍



状态机 – 应用


   游戏状态控制
   游戏场景切换
   角色动画
   等…
在Unity中



状态机 – 实现


   与Unreal Engine不同,Unity中没有可视
    化的状态机编辑功能,需要写Script来实
    现。
在Unity中



状态机 – 参考


   可以从互联网上找到共享的代码,如
       http://wiki.unity3d.com/index.php?title=Finite_State_Machine
       http://www.playmedusa.com/blog/2010/12/10/a-finite-state-machine-in-c-
        for-unity3d/
通信(Communication)
介绍



通信


   游戏中的各个模块之间需要相互影响,这就
    需要一种通信机制。
   模块间通信有多种形式,不同的通信机制各
    有利弊:
     Object reference

     Delegate

     Message中心
介绍



通信 – Object
reference

   引用者依赖于被引用者。
   耦合较强。
介绍



通信 – Delegate


   事件接收者与消息发送者建立明确的关联
    关系。
   由于这种关系是靠抽象的接口建立的,所
    以耦合较弱。
介绍



通信 – Message中
心

   通知者向消息中心发消息,接收者从消息
    中心取消息。
   两个通信模块无耦合关系。
在Unity中



通信 - Delegate


   C#语言的一个特性。
   效率较高
在Unity中



通信 – Object
reference

   对于public的引用,Unity支持在编辑器中
    编辑关联关系。
   是Unity开发中的一种常用做法。
在Unity中



通信 – Message -
1

   Unity提供Message Broadcast。
   此方法效率较低。
在Unity中



通信 – Message -
2

   还可用C#来自定义消息系统。
   参考
     http://www.unifycommunity.com/wiki/index.ph
     p?title=CSharpMessenger
参考
   http://www.gltop.com/index.php?q=node/3
   http://unity3d.com/support/documentation/
   http://forum.unity3d.com/
   http://game.ceeger.com/
Game development and unity practice

More Related Content

What's hot

Unity遊戲程式設計 - 2D Game Kit遊戲設計
Unity遊戲程式設計 - 2D Game Kit遊戲設計Unity遊戲程式設計 - 2D Game Kit遊戲設計
Unity遊戲程式設計 - 2D Game Kit遊戲設計吳錫修 (ShyiShiou Wu)
 
Unity遊戲程式設計(09) 3D物件與光源設定
Unity遊戲程式設計(09) 3D物件與光源設定Unity遊戲程式設計(09) 3D物件與光源設定
Unity遊戲程式設計(09) 3D物件與光源設定吳錫修 (ShyiShiou Wu)
 
Unity遊戲程式設計(05) 2D移動與碰撞處理II
Unity遊戲程式設計(05) 2D移動與碰撞處理IIUnity遊戲程式設計(05) 2D移動與碰撞處理II
Unity遊戲程式設計(05) 2D移動與碰撞處理II吳錫修 (ShyiShiou Wu)
 
Unity遊戲程式設計(11) 創建遊戲地形
Unity遊戲程式設計(11) 創建遊戲地形Unity遊戲程式設計(11) 創建遊戲地形
Unity遊戲程式設計(11) 創建遊戲地形吳錫修 (ShyiShiou Wu)
 
Unity遊戲程式設計(12)第三人稱角色控制器
Unity遊戲程式設計(12)第三人稱角色控制器Unity遊戲程式設計(12)第三人稱角色控制器
Unity遊戲程式設計(12)第三人稱角色控制器吳錫修 (ShyiShiou Wu)
 

What's hot (8)

Unity遊戲程式設計 - 2D Game Kit遊戲設計
Unity遊戲程式設計 - 2D Game Kit遊戲設計Unity遊戲程式設計 - 2D Game Kit遊戲設計
Unity遊戲程式設計 - 2D Game Kit遊戲設計
 
Vuforia AR 同時追踨多張辨識圖
Vuforia AR同時追踨多張辨識圖Vuforia AR同時追踨多張辨識圖
Vuforia AR 同時追踨多張辨識圖
 
Unity遊戲程式設計(09) 3D物件與光源設定
Unity遊戲程式設計(09) 3D物件與光源設定Unity遊戲程式設計(09) 3D物件與光源設定
Unity遊戲程式設計(09) 3D物件與光源設定
 
Unity遊戲程式設計(05) 2D移動與碰撞處理II
Unity遊戲程式設計(05) 2D移動與碰撞處理IIUnity遊戲程式設計(05) 2D移動與碰撞處理II
Unity遊戲程式設計(05) 2D移動與碰撞處理II
 
Unity遊戲程式設計(11) 創建遊戲地形
Unity遊戲程式設計(11) 創建遊戲地形Unity遊戲程式設計(11) 創建遊戲地形
Unity遊戲程式設計(11) 創建遊戲地形
 
Roll a ball遊戲專案
Roll a ball遊戲專案Roll a ball遊戲專案
Roll a ball遊戲專案
 
Unity遊戲程式設計(12)第三人稱角色控制器
Unity遊戲程式設計(12)第三人稱角色控制器Unity遊戲程式設計(12)第三人稱角色控制器
Unity遊戲程式設計(12)第三人稱角色控制器
 
mBot 教學2 mBlock積木式設計程式
mBot 教學2 mBlock積木式設計程式mBot 教學2 mBlock積木式設計程式
mBot 教學2 mBlock積木式設計程式
 

Viewers also liked

Exceptions in java
Exceptions in javaExceptions in java
Exceptions in javaSameer Patil
 
Word of Mouth Marketing - Capturing Media
Word of Mouth Marketing - Capturing MediaWord of Mouth Marketing - Capturing Media
Word of Mouth Marketing - Capturing MediaArihant Jain
 
Word of Mouth Marketing- Compelling Idea (Coca-Cola)
Word of Mouth Marketing- Compelling Idea (Coca-Cola)Word of Mouth Marketing- Compelling Idea (Coca-Cola)
Word of Mouth Marketing- Compelling Idea (Coca-Cola)Arihant Jain
 
Social media for business
Social media for businessSocial media for business
Social media for businessSameer Patil
 
Credit scoring paper 1 for uta
Credit scoring paper 1 for utaCredit scoring paper 1 for uta
Credit scoring paper 1 for utaRahul Gupta
 
China economy faces slow down
China economy faces slow down China economy faces slow down
China economy faces slow down Arihant Jain
 
Word of Mouth Marketing
Word of Mouth MarketingWord of Mouth Marketing
Word of Mouth MarketingArihant Jain
 
Word of Mouth Marketing - Advocates Community (AOL)
Word of Mouth Marketing - Advocates Community (AOL)Word of Mouth Marketing - Advocates Community (AOL)
Word of Mouth Marketing - Advocates Community (AOL)Arihant Jain
 
Brand: Diesel; Archetype: Outlaw
Brand: Diesel; Archetype: OutlawBrand: Diesel; Archetype: Outlaw
Brand: Diesel; Archetype: OutlawArihant Jain
 
Rich Dad Poor Dad (Book Review)
Rich Dad Poor Dad (Book Review)Rich Dad Poor Dad (Book Review)
Rich Dad Poor Dad (Book Review)Arihant Jain
 
Ready to Eat Snacks & FooD
Ready to Eat Snacks & FooDReady to Eat Snacks & FooD
Ready to Eat Snacks & FooDArihant Jain
 

Viewers also liked (19)

Exceptions in java
Exceptions in javaExceptions in java
Exceptions in java
 
Word of Mouth Marketing - Capturing Media
Word of Mouth Marketing - Capturing MediaWord of Mouth Marketing - Capturing Media
Word of Mouth Marketing - Capturing Media
 
Rugby
RugbyRugby
Rugby
 
Word of Mouth Marketing- Compelling Idea (Coca-Cola)
Word of Mouth Marketing- Compelling Idea (Coca-Cola)Word of Mouth Marketing- Compelling Idea (Coca-Cola)
Word of Mouth Marketing- Compelling Idea (Coca-Cola)
 
Social media for business
Social media for businessSocial media for business
Social media for business
 
Credit scoring paper 1 for uta
Credit scoring paper 1 for utaCredit scoring paper 1 for uta
Credit scoring paper 1 for uta
 
Android
AndroidAndroid
Android
 
China economy faces slow down
China economy faces slow down China economy faces slow down
China economy faces slow down
 
Word of Mouth Marketing
Word of Mouth MarketingWord of Mouth Marketing
Word of Mouth Marketing
 
Cms
CmsCms
Cms
 
Word of Mouth Marketing - Advocates Community (AOL)
Word of Mouth Marketing - Advocates Community (AOL)Word of Mouth Marketing - Advocates Community (AOL)
Word of Mouth Marketing - Advocates Community (AOL)
 
Ideation
IdeationIdeation
Ideation
 
Nestle overview
Nestle overviewNestle overview
Nestle overview
 
Brand: Diesel; Archetype: Outlaw
Brand: Diesel; Archetype: OutlawBrand: Diesel; Archetype: Outlaw
Brand: Diesel; Archetype: Outlaw
 
Lamborghini
LamborghiniLamborghini
Lamborghini
 
Mecatronica
MecatronicaMecatronica
Mecatronica
 
Rich Dad Poor Dad (Book Review)
Rich Dad Poor Dad (Book Review)Rich Dad Poor Dad (Book Review)
Rich Dad Poor Dad (Book Review)
 
Control unit
Control  unitControl  unit
Control unit
 
Ready to Eat Snacks & FooD
Ready to Eat Snacks & FooDReady to Eat Snacks & FooD
Ready to Eat Snacks & FooD
 

Similar to Game development and unity practice

Pleasantuser 3 d互动增强现实
Pleasantuser 3 d互动增强现实Pleasantuser 3 d互动增强现实
Pleasantuser 3 d互动增强现实Steve Xing
 
2011最流行的ppt模版
2011最流行的ppt模版2011最流行的ppt模版
2011最流行的ppt模版alanyuan123
 
2012 Autodesk Media &Entertainment Day
2012 Autodesk Media &Entertainment Day2012 Autodesk Media &Entertainment Day
2012 Autodesk Media &Entertainment DayFAUST CHOU
 
從圖像辨識到物件偵測,進階的圖影像人工智慧 (From Image Classification to Object Detection, Advance...
從圖像辨識到物件偵測,進階的圖影像人工智慧 (From Image Classification to Object Detection, Advance...從圖像辨識到物件偵測,進階的圖影像人工智慧 (From Image Classification to Object Detection, Advance...
從圖像辨識到物件偵測,進階的圖影像人工智慧 (From Image Classification to Object Detection, Advance...Jian-Kai Wang
 
Gui Conclusion2
Gui Conclusion2Gui Conclusion2
Gui Conclusion2Yao Lining
 
三国群英序章
三国群英序章三国群英序章
三国群英序章benimaru0407
 
OpenAI ChatGPT techtalk .pptx
OpenAI ChatGPT techtalk .pptxOpenAI ChatGPT techtalk .pptx
OpenAI ChatGPT techtalk .pptxSimmy41
 
Introduction to E-Prime
Introduction to E-PrimeIntroduction to E-Prime
Introduction to E-PrimeLisa Chang
 
How to cooporeate with IT partners from a designer's viewpoint
How to cooporeate with IT partners from a designer's viewpointHow to cooporeate with IT partners from a designer's viewpoint
How to cooporeate with IT partners from a designer's viewpointNTUST
 
2019 Unity優化講座 III - TGDF
2019 Unity優化講座 III - TGDF2019 Unity優化講座 III - TGDF
2019 Unity優化講座 III - TGDFKelvin Lo
 
炎炎夏日學 Android 課程 - Part2: Android 元件介紹
炎炎夏日學 Android 課程 - Part2: Android 元件介紹炎炎夏日學 Android 課程 - Part2: Android 元件介紹
炎炎夏日學 Android 課程 - Part2: Android 元件介紹Johnny Sung
 
2017 unity5 manual_intro
2017 unity5 manual_intro2017 unity5 manual_intro
2017 unity5 manual_introRiver Wang
 
Gentek应用介绍20111123
Gentek应用介绍20111123Gentek应用介绍20111123
Gentek应用介绍20111123oemgame
 
Unity台北場優化分享 II
Unity台北場優化分享 IIUnity台北場優化分享 II
Unity台北場優化分享 IIKelvin Lo
 
Week2.how to cooporeate with it
Week2.how to cooporeate with itWeek2.how to cooporeate with it
Week2.how to cooporeate with itditl
 
VPU&Teachable Machine介紹
VPU&Teachable Machine介紹VPU&Teachable Machine介紹
VPU&Teachable Machine介紹YOU SHENG CHEN
 

Similar to Game development and unity practice (20)

Unity遊戲程式設計- Unity基礎指引
Unity遊戲程式設計- Unity基礎指引Unity遊戲程式設計- Unity基礎指引
Unity遊戲程式設計- Unity基礎指引
 
Pleasantuser 3 d互动增强现实
Pleasantuser 3 d互动增强现实Pleasantuser 3 d互动增强现实
Pleasantuser 3 d互动增强现实
 
2011最流行的ppt模版
2011最流行的ppt模版2011最流行的ppt模版
2011最流行的ppt模版
 
2012 Autodesk Media &Entertainment Day
2012 Autodesk Media &Entertainment Day2012 Autodesk Media &Entertainment Day
2012 Autodesk Media &Entertainment Day
 
從圖像辨識到物件偵測,進階的圖影像人工智慧 (From Image Classification to Object Detection, Advance...
從圖像辨識到物件偵測,進階的圖影像人工智慧 (From Image Classification to Object Detection, Advance...從圖像辨識到物件偵測,進階的圖影像人工智慧 (From Image Classification to Object Detection, Advance...
從圖像辨識到物件偵測,進階的圖影像人工智慧 (From Image Classification to Object Detection, Advance...
 
Gui Conclusion2
Gui Conclusion2Gui Conclusion2
Gui Conclusion2
 
Gui Conclusion2
Gui Conclusion2Gui Conclusion2
Gui Conclusion2
 
GUI conclusion
GUI conclusionGUI conclusion
GUI conclusion
 
三国群英序章
三国群英序章三国群英序章
三国群英序章
 
OpenAI ChatGPT techtalk .pptx
OpenAI ChatGPT techtalk .pptxOpenAI ChatGPT techtalk .pptx
OpenAI ChatGPT techtalk .pptx
 
Introduction to E-Prime
Introduction to E-PrimeIntroduction to E-Prime
Introduction to E-Prime
 
How to cooporeate with IT partners from a designer's viewpoint
How to cooporeate with IT partners from a designer's viewpointHow to cooporeate with IT partners from a designer's viewpoint
How to cooporeate with IT partners from a designer's viewpoint
 
2019 Unity優化講座 III - TGDF
2019 Unity優化講座 III - TGDF2019 Unity優化講座 III - TGDF
2019 Unity優化講座 III - TGDF
 
炎炎夏日學 Android 課程 - Part2: Android 元件介紹
炎炎夏日學 Android 課程 - Part2: Android 元件介紹炎炎夏日學 Android 課程 - Part2: Android 元件介紹
炎炎夏日學 Android 課程 - Part2: Android 元件介紹
 
2017 unity5 manual_intro
2017 unity5 manual_intro2017 unity5 manual_intro
2017 unity5 manual_intro
 
Gentek应用介绍20111123
Gentek应用介绍20111123Gentek应用介绍20111123
Gentek应用介绍20111123
 
Unity台北場優化分享 II
Unity台北場優化分享 IIUnity台北場優化分享 II
Unity台北場優化分享 II
 
Week2.how to cooporeate with it
Week2.how to cooporeate with itWeek2.how to cooporeate with it
Week2.how to cooporeate with it
 
VPU&Teachable Machine介紹
VPU&Teachable Machine介紹VPU&Teachable Machine介紹
VPU&Teachable Machine介紹
 
UiGathering Talk - Motion User Interface / by Ivan Wei
UiGathering Talk - Motion User Interface / by Ivan WeiUiGathering Talk - Motion User Interface / by Ivan Wei
UiGathering Talk - Motion User Interface / by Ivan Wei
 

Game development and unity practice

  • 1. 初阶 v 0.8.0 更 新 : 2 0 1 3 - 0 1 - 11
  • 2.
  • 3. 教程说明  概念介 绍  对游戏开发中的一些概念和基本应用进 行简要说明。  Uni ty 实践  在Unity中的使用方法和注意事项。
  • 4. 游戏生产线概要 艺术内容制作 艺术内容导出 游戏内容制作 游戏内容构建 游戏内容打包 游戏内容加载 游戏内容表现
  • 7. 介绍 游戏对象  游戏对象是对场景中物体进行管理的基本单 元。  通过游戏对象可对场景中的物体进行定位、 查找、访问等操作。  对象有级联关系,对一个对象的操作会影响 到其子对象。如,移动一个对象,其子对象 也跟随其移动。
  • 8. 在Unity中 游戏对象  游戏对象在”Hierarchy”中管理。  所有的游戏对象及其所引用的资源,会被 构建入游戏数据中。
  • 9. 在Unity中 游戏对象 – 主要属性  Transformation  物体的位置、旋转、缩放属性。  Parent  其层级关系中的父对象。
  • 10. 在Unity中 游戏对象 – 主要方法  Start()  对象被实例化后执行一次。  Update()  对象被激活后,每帧执行。
  • 12. 介绍 部件  类似于插件概念的模块化的结构  游戏对象需要哪些特性,就把对应的部件 挂上去。  如Collision、Audio Source、Light、 Material等。
  • 13. 在Unity中 部件  选中一个Game Object,从Component菜 单中可以添加一个所需的Component到这 个Game Object上。
  • 16. 介绍 Assets  Assets可理解为用于制作、加工游戏所需 的各类源数据。  这些数据不会被直接构建入游戏,即这里 数据的多少不会对游戏应用的大小有影响。  制作游戏(场景)时需要哪些数据,从 Assets中选取、构建。
  • 17. 在Unity中 Assets  Asset在“Project”中管理。  将资源文件放置Asset目录下,Unity回自 动检测并将其导入”Project”中。
  • 19. 介绍 Prefab  Prefab是Asset的一种。  Prefab相当于游戏对象的模版,对于有相 同或者相似特性的游戏对象,可以用 Prefab来对其实例化,这样就不用反复的 配置其属性。
  • 20. 在Unity中 Prefab  可将Game Object实例直接拖到Asset中,就会 自动生成一个Prefab。  如果一个对象引用其它对象,被引用的对象又不 在Prefab中,生成Prefab后引用关系会丢失。  用Prefab实例化多个游戏对象,如果修改Prefab 的属性,这些游戏对象的属性也会跟着改变。
  • 22. 介绍 数据加载 – 打包  说明  在Build游戏数据时,应将游戏(编辑期)数据打 包,即将零散的数据资源打入一个或多个压缩包中。  目的  数据加密。  压缩数据,节省应用尺寸。  提高加载速度。
  • 23. 介绍 数据加载 – 序列化  说明  将数据转换为其在运行时内存中的格式,这样数据 只需从文件加载入内存即可直接使用,而不用对加 载进来得数据进行解析,也不需要用解析出来的数 据来逐成员的构造和初始化游戏对象。  目的  提高数据加载与游戏初始化速度。
  • 24. 介绍 数据加载 – 同步  在主线程中一次性的(在一个loop中)执 行完所有加载逻辑。  如果界面也在调用加载操作的线程中,在 加载过程中界面将停止更新与响应。
  • 25. 介绍 数据加载 – 异步  多线程  即多线程的加载,不影响其它逻辑的执行,如 界面渲染、输入操作等。  “伪”异步  自己管理资源加载,即在循环中一次加载一个 或者一批资源,保证每个循环CPU可以执行其 他的逻辑。
  • 26. 在Unity中 数据加载 - Hierarchy中的资源  普通的(即不通过Resource或WWW)场 景资源加载时,Hierarchy中的Game Object及其所引用的Project中的资源会被 自动的全部加载进内存。
  • 27. 在Unity中 数据加载 - Resources  Resource目录下所有资源被打成一个包 中。  可以有选择的加载数据到内存中。
  • 28. 在Unity中 数据加载 - WWW  可将不同数据打成不同的包,在运行时动 态加载。  可从web上下载并加载包,也可加载本地 的包。
  • 31. 介绍 模型 – 顶点  顶点(位置)信息(x,y,z)所使用的数据类型 决定精度和数据大小。  提示  要考虑好场景中模型的最大尺寸和最小尺寸,顶点 数值过小或过大都会引起精度丢失问题。  精度丢失可能会引起Z闪烁。  “大尺寸”数据类型比较占用内存。
  • 32. 介绍 模型 – 法线  法线属性可以表现表面方向,影响物体的 光影效果。  提示  如果某个面的一块很黑,打灯光也无法照亮, 可以考虑现在数据中检查一下模型法线。
  • 33. 介绍 模型 - UV  顶点与贴图的坐标映射。
  • 34. 介绍 模型 – 顶点色  记录顶点的颜色。  通常用于静态光照,也可用于多层贴图混 合。
  • 35. 介绍 模型 - Index  多边形是有方向的,Index的顺序决定面 的方向。
  • 36. 介绍 模型 – 备注  顶点的数量直接影响模型精细度和顶点色 过渡的细致程度。  (可见的)模型的面的数量对渲染性能有 直接影响,对于目前大多数设备(PC、 Console、Pad等),应将其控制在几万 到几十万(<30万)之间。
  • 37. 在Unity中 模型 – 使用  将模型文件放置Asset目录中的某个位置, Unity会自动检测并将其导入到“Project”中。
  • 38. 在Unity中 模型 – 模型文件  支持的格式有fbx, collada, ma等。  FBX - Autodesk的一种数字内容文件格式, 很多数字内容制作工具都支持对这种格式 数据的导入、导出。  Unity支持Maya文件导入,但需要安装 Maya。
  • 40. 介绍 贴图  为游戏中的元素的颜色显示或者运算提供 颜色输入。例如,模型表面的图像,用于 运算材质的颜色,用户界面上的图像等等。
  • 41. 介绍 贴图 – 格式  Tga – 32位,有8位Alpha通道。  Png – 压缩格式,有透明色。  Jpg – 压缩格式,无半透。  DXT – 有不同的压缩格式。
  • 42. 介绍 贴图 – 尺寸  不同的设备对渲染用贴图的尺寸有所限制。  如某些设备上要求贴图宽高是2的幂;有 些设备将最大尺寸限制到2048*2048。具 体限制请查看文档。
  • 43. 介绍 贴图 - Mipmap  如果场景有纵深,mipmap可让远处贴图 看着不“花”(这是由多个贴图像素投影到 同一个屏幕像素上造成的)。  并且可提高渲染性能。
  • 44. 介绍 贴图 – 优化  对于3D游戏,贴图通常都是游戏内存使 用大户,所以在贴图的使用上尽量优化的 使用。  不影响效果的情况下尽量使用尺寸小的格式。  只加载需要的贴图。
  • 45. 介绍 贴图 – 优化举例  可使用24位色(无半透)的就不要使用32位 色。  可使用压缩格式(3D物体)的就不要使用非 压缩格式。  渲染物体总在同一深度的就不要声称mipmap。  颜色简单的可使用索引色。
  • 46. 介绍 贴图 – 打包  将贴图打包的好处  优化内存 – 贴图文件在内存中占用2的幂宽高的空 间,打包后可移除这些空间。  优化性能 - 可节省材质数量(即可优化渲染的提交 次数)  优化尺寸 - 减少贴图的总的大小。  提高制作效率 - 可统一的对贴图进行格式转换等处 理。
  • 47. 在Unity中 贴图  支持的贴图文件格式  Png, tga, jpg, psd…  将贴图复制到Asset目录,这个贴图就可 被导入。  贴图压缩 – 设置贴图的压缩方式可在内存 和CPU间进行平衡。
  • 48. 在Unity中 贴图 – 打包  可选择Texture Packer对贴图进行打包。
  • 50. 介绍 材质  作用  为游戏中的模型的“表面”提供属性。例如,颜色或光照的属性和 运算、物理属性、声音属性等等,使用最为广泛的是用于渲染的 材质。  渲染材质的映射模式有  Diffuse  Normal  Specular
  • 51. 介绍 材质 – Diffuse Map  材质的漫反射颜色表示的是在所有方向平均 反射的入射光量。 值 (1,1,1) 表示所有方向 可以反射 100% 的入射光。 Diffuse映射从各 个方向上看上去都不会有光影变化。漫反射 颜色将只会在受一些无阴影的光照影响时显 示,因为它会缩放入射光照。
  • 52. 介绍 材质 – Normal Map  法线贴图可以指定每个像素的法线属性, 它可以同时对漫反射和高光光照产生影响。
  • 53. 介绍 材质 – Specular Map  高光颜色可以表现在某个方向反射的入射光线多少。 高光反应在您的眼睛与反射的入射光线的方向对齐的 时候是最亮的,所以高光是根据视图进行变化的。  法线也会影响高光,因为它会影响反射的光源方向。 高光强度可以控制表全面的光泽或光泽程度。 非常 高的高光强度可以表现如镜面一般的表面,而低强度 可以表现比较粗糙的表面。
  • 54. 在Unity中 材质  Unity中的材质是非Graph编辑的,只能根 据shader进行属性设置。  如果需要实现特殊的效果,需要写对应的 shader文件来支持。
  • 56. 介绍 摄像机  透视投影 – 有景深,近大远小,可参考真 实照相机的效果。  正交投影 – 无景深,无近大远小的效果, 大多用于2D表现,例如GUI。  FOV – 镜头广度,也可理解为“近大远小” 的程度。
  • 57. 在Unity中 摄像机  Projection  投影模式 – 可设置正交投影、透视投影。  Target Texture  可将此摄像机中的内容渲染到一张贴图上。  可用于实现画中画、镜面等效果。
  • 59. 介绍 灯光  环境光(Ambient Light)  照亮整个场景,无方向(或者说来自四面八方)。  点光源(Point Light)  灯泡的效果。  方向光(Directional Light)  太阳光的效果。  聚光(Spot Light)  舞台上聚光灯的效果。
  • 60. 介绍 灯光 – 备注  尽量减少同时激活的动态光源的数量以提 高渲染性能。
  • 61. 在Unity中 灯光  Light Component  给对象赋予Light Component,对象就具有了光照 属性  类型  可设置Light Component的类型有Spot、 Directional、Point、Area光。  环境光在“Edit->Render Settings”中设置。
  • 64. 介绍 帧动画  帧动画是游戏开发中最主要的一种动画表现方式。  Animation通常是指按照时间变化对某游戏对象 及其属性进行的改变。  帧动画可改变的内容可能包括:  Transform属性  颜色属性  声音属性  等等…
  • 65. 介绍 帧动画 – 应用  物体运动 – 如场景中的机关。  角色动画 – 如骨骼动画。  特效表现 – 如粒子效果。  其它特效 - 如流水、岩浆等。
  • 66. 在Unity中 帧动画  Unity有个动画编辑器,点击菜单Window- >Animation打开。  选中一个Game Object后,可对其绑定的 动画进行编辑。  Unity动画支持在指定帧处产生回调。
  • 69. 介绍 菜单/窗体  控件(Control)  可复用的界面上的元素,如按钮、滚动条、下 拉列表等。  事件/消息(Event/Message)  处理用户的操作,如点击、拖拽等。
  • 70. 在Unity中 菜单/窗体  NGUI  NGUI是一款为Unity开发的GUI库,有完备的 Menu/Window支持。  提供了很多常用的UI控件、界面行为、事件响应。  事件模型  NGUI提供了一些消息脚本,将所需脚本拖到对应 的UI对象上,就可设置此对象的事件响应。
  • 71. HUD
  • 72. 介绍 HUD  HUD - Head Up Display  屏幕上向用户反馈信息的图形、文字元素。
  • 73. 介绍 HUD - Sprite  HUD的一个重要的元素,其特性有:  Transformation – 移动、旋转、缩放。  Animation – 可通过播放帧动画来表现2D角色 动作。  Behavior – 各种行为表现,如淡入、淡出、翻 转、按指定轨迹运动等。
  • 74. 在Unity中 HUD  NGUI  NGUI对HUD有很好的支持。  行为(Behavior)  NGUI中有个名为Tweening的脚本库,提供了 各种用于控制UI对象如何动态变化的脚本。
  • 75. 在Unity中 HUD – 数据生产线  Texture Packer  一款贴图打包工具,可将贴图素材打包。  Atlas maker  生成Atlas(相当于各类Sprite的仓库)。
  • 77. 介绍 字体 – 矢量字体  改变字体大小不影响字体渲染效果。  很多游戏引擎或GUI并不支持运行时预生 成的字体。
  • 78. 介绍 字体 – 贴图字体  字体样式可自定。  文字内容、颜色可动态改变。  不宜缩放,渲染质量会下降。
  • 79. 介绍 字体 – 文字贴图  画到贴图上的文字  可高度定制文字的样式。  内容不能动态改变。  适用于游戏中的小量文字使用。
  • 80. 在Unity中 字体 - NGUI  NGUI支持贴图字体,可支持描边或阴影 效果。  字体的材质shader要使用 Unlit/Transparent Colored。
  • 81. 在Unity中 字体 - 矢量字体  ScaleForm生成支持矢量字体渲染,与 Unity的集成正在开发当中。  Unity的TTF导入是在编辑期预生成字体贴 图的。
  • 82. 在Unity中 字体 – 生产线  BMFont  一款字体文件制作工具,支持简单的命令行操作。  可导出字体描述文件(fnt)和字体贴图文件。  Unity使用字体描述文件要将扩展名由fnt改成txt。  Font Maker  NGUI的字体制作工具,生成Unity中可用的数据。
  • 85. 介绍 本地化的内容  可能需要本地化的内容有  文字(也涉及字体)  贴图(通常也是为了文字)  语音
  • 86. 介绍 文本本地化 - 编辑工 具  如果游戏的文字量比较大,就需要工具来辅 助管理本地化文字来提高编辑效率。  工具  Excel - 很多游戏项目是用Excel进行字符串本地化 管理。  其它独立工具 – 也有一些第三方的本地化编辑工 具。如POEditor、poedit等。
  • 87. 文本本地化 - 转换工 具  游戏加载本地化信息需要一种比较容易解 析的文件格式,通常就需要有工具将本地 化文本数据进行格式转换。
  • 88. 文本本地化 – 文本提 取工具  对于有的项目,游戏中可能有大量的文本信息, 并且在开发过程中文本信息经常变动,这就需要 有工具能将代码中的文本提取出来合并到文本本 地化信息库中去。  此类工具有xgettext等。
  • 89. 在Unity中 文本本地化  NGUI支持Label的本地化,但不方便大量 文本的本地化编辑。  第三方资源  TextManager类 – 可加载、解析po格式的本地 化文件。
  • 91. 介绍 文本本地化 – 贴图字 体  启动游戏时,根据语言确定资源所在路 径。  如果游戏内的文字量比较大,对于像中 文、日文等语言,字体贴图的数据量会比 较大。
  • 92. 介绍 文本本地化 – 矢量字 体  可使用矢量字库来使游戏支持某语言的字 体。  如果使用的文字量很少,使用字库反而会 增加应用的尺寸。  注,不是所有引擎都支持运行时矢量字体 渲染。
  • 93. 在Unity中 文本本地化  第三方资源  TextManager – 可加载、解析po格式的本地化 文件。
  • 96. 介绍 多分辨率支持 – 适配 策略  完全缩放  画面会被拉伸。  高度、宽度适配(等比)  两侧或上下会留空或者超出屏幕。这种情况下就要考虑 画面的安全区。  完全适配(等比)  根据计算结果决定是高度还是宽度适配,使得画面内容 完全在屏幕内。这种情况只会在两侧或上下留空。
  • 97. 介绍 多分辨率支持 –安全 区  对于高度或宽度适配的模式,在不同分辨 率的设备上能显示出来的区域会有不同, 这样在设计的时候就要确定好最小可视区 域,制作时要将必须显示和响应的内容制 作到这个区域中。
  • 98. 在Unity中 多分辨率支持 – 适 配  Unity没有设置项直接设置屏幕适配,需 要写脚本来实现。  如果使用的是NGUI,可根据情况设置 UIRoot上的Manual Height的值。
  • 100. 介绍 素材适配  目前的移动设备分辨率差异很大,内存资源 也有差异。大多情况下,内存资源的大小跟 分辨率的大小有一定的关系,所以为了节省 内存使用,可能需要根据分辨率(或者dpi) 区分开贴图资源的加载。比如,  大分辨率用大贴图,小分辨率用小贴图。运行时根 据设备情况加载不同的资源。
  • 101. 在Unity中 素材适配 – 动态切 换  NGUI可以在运行时切换Atlas。  但这种方法会使内存的高峰值会较高。  建议编辑时默认使用低分辨率资源,运行 时按照需要替换成高分辨率资源。  可改进生产线,编译前去掉关联,遍以后 恢复关联。
  • 104. 介绍 碰撞  物理材质  影响物体间的相互作用,如摩擦力、弹性系数 等。  分组(空间分割)  预知的不可能相互碰撞的物体置入不同的分组 中,碰撞检测时就不用对这两个分组中的物体 进行碰撞运算,以节省大量的运算。
  • 105. 在Unity中 碰撞  给Game Object添加一个Collision Component,这个Game Object就具有了 (被)碰撞属性。  Unity可绑定的碰撞体有  Box、 Sphere、 Capsule、 Mesh、 Wheel、 Terrain  注,Unity中无碰撞分组设置,需要在脚本中 实现。
  • 107. 介绍 刚体 – 特性  质量、速率、力、加速度、旋转。  (参考物理学中关于刚体的说明)  场景的尺寸对物理表现会有影响。
  • 108. 介绍 刚体 – 形状与性能  球体 – 性能最高。  立方体、圆柱体、胶囊、轮子 – 性能适中, 通过组合可用于略复杂的物理碰撞。  凸多边形 – 可表现任意形状的碰撞体,性 能由面数决定,但相对来说性能最低。
  • 109. 介绍 刚体 – 碰撞检测类 型  有连续碰撞和非连续碰撞检测  如果不是连续碰撞检测,物体速度较快时 可能会穿过另一碰撞物体。
  • 110. 在Unity中 刚体  如果需要一个Game Object按照物理特性运 动,就给这个Game Object绑定一个 RigidBody Component。  Mass – 质量,影响物体的碰撞效果。  Drag – 阻滞系数,用于表现物体被空气、水 等物质阻滞的效果。  Constrains – 给物体某个方向上的约束。
  • 111. 在Unity中 刚体 – Collision Detection  Discrete – 性能高、适合低速运动物体, 物体高速运动时可能穿过其它碰撞体。  Continuous – 连续的碰撞检测,保证物体 不会穿过其它碰撞体。但性能较低。  Continuous Dynamic – 针对静态网格碰 撞器(不带刚体),用于快速移动的物体。
  • 114. 介绍 样本 – 格式  格式(音频文件)  wav – 支持无压缩。  mp3, ogg – 压缩格式。  格式(在内存中)  Native – 相对省CPU,但耗内存。  Compress - 相对省内存,但耗CPU。  具体如何选择要看内存和CPU使用情况而定。
  • 115. 介绍 样本 – 加载方式  Streaming  省内存、通道数有限;  适合游戏音乐、语音对话等长音频。  In memory  性能高、费内存;  适合短小的音效。
  • 116. 介绍 样本 – 立体声、单 声道  立体声  自身有空间感。  适合于高质量的2D音频播放需求。  单声道  自身没有空间感。  适合于3D场景中的音效播放。
  • 117. 在Unity中 样本  Wav Asset,即AudioClip。  音频格式  Native(WAV) – 省CPU、费内存。  Compressed(MPEG) – 省内存、费CPU。  加载类型  Load into memory – 预先将样本加载到内存中、播放时 从内存播放。  Stream from disc – 不加载样本,播放时边缓存边播放。
  • 119. 介绍 声源  音源,用来播放样本,决定声音播放时的 属性。
  • 120. 介绍 声源 – 特性  优先级 – 所有设备可以同时播放声音的通 道数都是有限的,当同时播放的声音太多 时,低优先级的(通常是相对不重要的) 声音就会被停止播放。  音量 – 样本在播放时的音量。
  • 121. 介绍 声源 – 2D/3D  2D声音跟方位、距离无关。  3D声音更容易模拟现实(3D)世界的声音 效果。
  • 122. 在Unity中 声源  给Game Object添加Audio Source Component,这个Game Object就有了 Sound Source的特性。  可在Inspector中设置  静音(Mute)、 优先级、 音量(Volume)、 音调(Pitch)等。
  • 123. 在Unity中 声源 – 备注  同一时刻,一个Audio Source只播放一个 样本。但可用一个Audio Source去播放不 同的Audio Clip。
  • 125. 介绍 3D Sound  方位  3D声音有方向、有位置,玩家在场景中移 动、转向时会更身临其境。  速度  速度对多普勒效果产生影响。通常用于表现高 速运动的发声体。
  • 126. 介绍 3D Sound – 衰减曲 线  对数衰减 – 声音随着距离的增大,迅速减 弱,相对接近现实世界中的声音表现。  线性衰减 – 声音随着距离的增大,均匀的 减弱。  自定义衰减曲线
  • 127. 在Unity中 3D Sound  要播放3D声音,首先要勾 选Audio Clip的3D Sound 属性。  注,游戏场景的尺寸设定 会直接影响到3D声音。
  • 128. 在Unity中 3D Sound – 衰减  可以选择或者自定义声音衰 减曲线。  Max Distance决定衰减曲线 中横轴的长度。
  • 131. 介绍 状态机  说明  状态机是对逻辑的模块化封装,在状态内部执 行相应的逻辑,由外界条件触发状态切换。  通常一个状态有:进入、执行、退出三个阶段。  目的  划分逻辑模块,理清逻辑关系。
  • 132. 介绍 状态机 – 应用  游戏状态控制  游戏场景切换  角色动画  等…
  • 133. 在Unity中 状态机 – 实现  与Unreal Engine不同,Unity中没有可视 化的状态机编辑功能,需要写Script来实 现。
  • 134. 在Unity中 状态机 – 参考  可以从互联网上找到共享的代码,如  http://wiki.unity3d.com/index.php?title=Finite_State_Machine  http://www.playmedusa.com/blog/2010/12/10/a-finite-state-machine-in-c- for-unity3d/
  • 136. 介绍 通信  游戏中的各个模块之间需要相互影响,这就 需要一种通信机制。  模块间通信有多种形式,不同的通信机制各 有利弊:  Object reference  Delegate  Message中心
  • 137. 介绍 通信 – Object reference  引用者依赖于被引用者。  耦合较强。
  • 138. 介绍 通信 – Delegate  事件接收者与消息发送者建立明确的关联 关系。  由于这种关系是靠抽象的接口建立的,所 以耦合较弱。
  • 139. 介绍 通信 – Message中 心  通知者向消息中心发消息,接收者从消息 中心取消息。  两个通信模块无耦合关系。
  • 140. 在Unity中 通信 - Delegate  C#语言的一个特性。  效率较高
  • 141. 在Unity中 通信 – Object reference  对于public的引用,Unity支持在编辑器中 编辑关联关系。  是Unity开发中的一种常用做法。
  • 142. 在Unity中 通信 – Message - 1  Unity提供Message Broadcast。  此方法效率较低。
  • 143. 在Unity中 通信 – Message - 2  还可用C#来自定义消息系统。  参考  http://www.unifycommunity.com/wiki/index.ph p?title=CSharpMessenger
  • 144. 参考  http://www.gltop.com/index.php?q=node/3  http://unity3d.com/support/documentation/  http://forum.unity3d.com/  http://game.ceeger.com/