初阶




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

   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

PDF
Unity遊戲設計- Unity基礎指引
PPTX
component based html5 game engine
PDF
Unity遊戲程式設計(01) Unity簡介
PDF
Unity遊戲設計- 2D動畫製作及應用
PDF
Vuforia AR影片程式設計
PDF
Unity遊戲程式設計(03) 2D動畫製作及應用
PDF
Unity脚本入门
PDF
Unity遊戲程式設計(02) 應用2D圖片物件
Unity遊戲設計- Unity基礎指引
component based html5 game engine
Unity遊戲程式設計(01) Unity簡介
Unity遊戲設計- 2D動畫製作及應用
Vuforia AR影片程式設計
Unity遊戲程式設計(03) 2D動畫製作及應用
Unity脚本入门
Unity遊戲程式設計(02) 應用2D圖片物件

What's hot (8)

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

Viewers also liked (19)

PPTX
Exceptions in java
PPTX
Word of Mouth Marketing - Capturing Media
PPT
PPTX
Word of Mouth Marketing- Compelling Idea (Coca-Cola)
PPTX
Social media for business
PDF
Credit scoring paper 1 for uta
PPTX
Android
PPTX
China economy faces slow down
PPTX
Word of Mouth Marketing
PPTX
PPTX
Word of Mouth Marketing - Advocates Community (AOL)
PPTX
Ideation
PPTX
Nestle overview
PPTX
Brand: Diesel; Archetype: Outlaw
PPTX
Lamborghini
PPT
Mecatronica
PPTX
Rich Dad Poor Dad (Book Review)
PPTX
Control unit
PPTX
Ready to Eat Snacks & FooD
Exceptions in java
Word of Mouth Marketing - Capturing Media
Word of Mouth Marketing- Compelling Idea (Coca-Cola)
Social media for business
Credit scoring paper 1 for uta
Android
China economy faces slow down
Word of Mouth Marketing
Word of Mouth Marketing - Advocates Community (AOL)
Ideation
Nestle overview
Brand: Diesel; Archetype: Outlaw
Lamborghini
Mecatronica
Rich Dad Poor Dad (Book Review)
Control unit
Ready to Eat Snacks & FooD
Ad

Similar to Game development and unity practice (20)

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