Unity 项目设计与管理(上)
在制作游戏时,游戏内容各型各色,但使用Unity设计游戏项目通常大致包括以下几部分:
项目简述
策划文案
美术资源
程序逻辑
性能优化
市场上存在各种类型的游戏,为了避免游戏过于同质化,项目组的相关负责人需要确定,该项目是定位于何种类型,是RPG还是FPS又或者是Sport类。
任何项目组制作的游戏最终都需要推向市场,只有得到玩家的支持,游戏才能走得更远。项目启动初期,必定会存在游戏开发的大致时间计划,是8个月还是1年,又或者是18个月 ?
游戏项目开发必定存在经费预算,预算包括研发预算和推广预算两部分,项目组的人员配置通常取决于游戏复杂度和项目经费预算。在游戏总体内容固定前提下,人员数量与开发时间大致成反比,但是如果组内人员管理不善,也会存在不协调。所以在项目人员总数确定的情况下,还需明确项目组内具体分配,策划,美术,程序各多少人。
美术是游戏的脸,玩家对游戏的第一印象是美术风格,美术直接决定了玩家是否会在游戏中停留超过十分钟。美术人员在制作相关美术资源时,具体涉及到以下几个部分。
标准 - Standard
材质数量
模型三角面
纹理尺寸
粒子数量
动画帧频
当美术人员把模型文件导入Unity编辑器时,若导入设置的各选项设置合理,对游戏性能有着良性影响,导入时需要注意以下事项。
若勾选上图中”Read/Write Enabled”将会使该模型在内存中存在一份拷贝,用于在脚本中对模型进行修改。若该模型不会在脚本中进行修改,则不勾选。
Optimize Mesh 必须勾选,便于引擎底层对Mesh进行优化处理。
Normals & Tangents 中的Normals选项若设置为非Import项,可以降低Memory,并减少ipa/apk包体容量。
如果当前Shader为固定管线模式,点击上图中的Show generated code 按钮,可以查看对应的Vertex/fragment模式代码。
点击上图中的Compile and show code可以生成对应的汇编代码或者GLSL代码。
在工程文件夹的Library/ShaderCache文件下,可以查看所有的Shader缓存文件。
Shader性能分心工具 — AMD GPU ShaderAnalyzer / PVRShaderEditor。
Unity支持目前主流的各种图片格式,包括PSD,TGA,PNG,GIF,BMP,JPG,TIFF,PICT等。引擎在导入图片时,会生成引擎自身所使用的贴图数据,在图片导入设置中,需要合理设置各选项。
若勾选上图中”Read/Write Enabled”将会使该贴图在内存中存在一份拷贝,用于在脚本中对其进行修改。若该贴图不会在脚本中进行修改,则不勾选。
若图片尺寸不是2的指数,其所占用内存的大小略大于原始尺寸,并且GPU对其进行读取的速度也有可能会略微偏慢。
若勾选Generate Mip Maps,改贴图所占用内存会变大33%,但对整体性能有很大提升。
Unity 5使用了全新的光照系统,更优的光照算法,有助于美术人员制作优美的场景,但是使用光照时,除了考虑到场景精美度时,还需要考虑到玩家设备的兼容性。
移动平台推荐使用Baked或 Mixed,避免使用RealTime模式的关照。
Render Mode 不推荐使用Important。
使用Baked模式时,在菜单Window->Lighting的Object标签页,可通过设置Scale In Lightmap的值,以变更lightmap中有多少像素值用于该GameObject的光照计算。
Unity目前支持Animation和Animator两种动画播放形式。Animation是老式动画系统,Animator作为新的动画系统,有其特有的优势。在使用Animator时,理解如下信息,有助于更好的使用的Animator。
勾选Apply Root Motion表示动画可以更改根节点的位置,如果不勾选,则根节点的位置信息无法通过动画更改,即便在动画帧里有关于根节点的位置信息。
State 表示具体的动画状态信息,若要实现状态切换,通过Transition完成。
Blend Tree 用于多个动画的平滑混合,并且可设置每个动画各自的权重值。
在菜单Window->Animator窗口中可执行具体操作。
声音是游戏中不可或缺的部分,好的音乐效果对提升游戏品质有着重大意义,Unity支持主流的各种音乐格式,包括mp3,ogg,wav,aif等。但是,如果音乐格式设置不当,也会降低游戏性能。
基于Vorbis编码的音乐文件(比如ogg)解压后占用10倍于其磁盘大小的内存。
PCM音质高但是压缩率很低。
Mp3格式音乐在iOS设备上有硬件解码器。
Load Type 中的Decompress On Load 选项不推荐用于大文件。大文件推荐使用 Compressed In Memory选项。
Load In Background 如果勾选表示该音频文件将在后台加载,而不会造成主线程阻塞。
项目设计与管理关于策划与美术的部分就介绍到这里,下篇将为大家介绍程序及优化部分的内容,请保持关注哦!
WWDC上展示Unity制作的Tessellation Demo
我们还会分享更多Unity相关的技术内容在Unity官方中文论坛(forum.china.unity3d.com),请保持关注!