这部分主要是Asset Import and creation方面的一些学习散记,包括导入Mesh,Animation,Audio,Script等等。其中零散的涉及一些script的基础知识。
导入Mesh时需要注意的一些设置:
Colliders:
Unity主要有两种Collider,Mesh collider和Primitive
collider,前者的实现方法是在导入mesh的时候,在Import Settings里面勾选Generate
Collider即可。前者主要用于环境碰撞,而后者主要用于运动的物体,比如一辆运动的汽车,这时需要在Import
Settings里把Generate Collider取消。
法线映射和角色:
如果角色使用了法线映射,且是高模版本制作,你应该导入具有180度smoothing angel(SA)的游戏质量版本。即导入时设置SA为180.如果显示出来还是有奇怪的接缝之类的,勾选上split tangents across UV seams.
动画导入:
方便的做法是把一个模型的所有动画做到一个动画文件里,导入的时候Unity的按帧分割功能可以把角色动画分割成需要的部分,如 walk,run,kick等。把动画文件直接放在Assets文件夹里,Unity会自动导入该动画,你只需要在Project View里找到该文件,并设置Import Settings.如果不使用Unity的分割功能,可以把同样角色的一组动画文件按照以下格式命名:name@animation,如 goober@walk.
导入反动力学:
如果动画用到IK(反动力学),那么导入时勾上Bake IK&simulation复选框。
Unity支持两种audio导入,native(WAV和AIFF)和compressed。compressed方式导入PC/MAC平台编码 为Ogg Vorbis,移动平台编码为MP3,前者音质没有下降,后者因为要re-encoding,会有一定的音质损失。compressed导入的audio 在游戏中需要消耗一些CUP资源用来解码。另外Unity支持硬件编码。
tracker modules类似于midi音乐,但不会随着硬件的改变而发生变化,格式有it,s3m,xm,mod,这种格式的好处是小巧,占带宽少。
Audio Clip的设置中有一项是iOS ONLY的:硬件解码——利用iOS的硬件解码器可以省下CPU资源用于游戏的其他方面。另一项iOS/Android ONLY:Gapless looping,循环播放的平滑过渡。
Script方面:
在某个gameObject的script里面对这个gameObject的其他component的属性进行操作,直接输入该component 名称即可,如transform代替gameObject.transform,编译器默认前面已经加上了gameObject,除非你特指一个不同的 gameObject。在使用gameObject.transform.translate()时,前面的gameObject是否去掉纯属个人喜好问 题。
this访问的是当前处理的script。this.gameObject即gameObject,this.transform即transform。
引用非本gameObject的组件的方法:GetComponent("Component Name"),比如在scriptB中引入scriptA,可以在scriptB中敲入如下代码:scriptA = GetComponent("ScriptA");