unity3d
文章目录
使用凹凸贴图
Shader
换装
Unity3D 模型换肤技术
Unity里的人物驱动/换装备/换武器/换衣服/动画重定位
换装demo时美术遇到的问题详解
挂点
这是为了应付不同模型同一装备要挂在不同位置而提出的解决方法。如果整个工程只能一个角色模型,那也就只用固定的挂点了,而程序也不用知道这个挂点在哪,用默认的就行了。
unity中武器替换的注意点
刀光
Melee Weapon Trail–Unity刀光插件分享
着色器
Unity5 中基於物理的著色器
基于物理着色(PBS)的材质系统
Unity3d 如何找到游戏对象并改变其颜色
地形
IClone地形编辑器结合T4M插件在Unity3D使用
iClone
视频: iClone動畫教學12地形轉換
t4m
Object2Terrain
图像特效
Mobile相关
MAKING YOUR MOBILE GAME A SUCCESS. PART ONE: F2P GAME DESIGN
MAKING YOUR MOBILE GAME A SUCCESS. PART TWO: THE PREMIUM OPTION
MAKING YOUR MOBILE GAME A SUCCESS. PART THREE: ACQUIRING USERS
UNITY 4: AAA GRAPHICS AND PERFORMANCE FOR YOUR MOBILE GAMES
Asset store
- 下载目录:C:\Users\Administrator\AppData\Roaming\Unity\Asset Store
Mecanim动画
- 连续两次调用CrossFade,则后一次的CrossFade不会替换前一个,而是会丢失
- 根动画
1 如果是Human自动就设置好了,只要启用Animator的Apply root motion就可以了
2 如果是Generica 设置模型骨骼的根节点,bip骨骼一般是Bip 001 b 动画的Rig->Avatar Definition选择Copy From Other Avatar,Rig->Source选择对应骨骼的Avatar(也可以选择Create From This Model,然后设置根骨骼为Bip 001) c 查看动画的面向是否正确,不正确则Aniamtions->Root Transform Rotation->Based Upon(at Start)选择Original - 表情动画
普通的哭笑等动画做一帧就可以了,不过Max里要做成两帧,不然Max导不出动画
导出FBX时,MAX用Morpha做的表情动画要同时导出变形器所在的模型,如果模型有蒙皮则还要带上蒙皮
1 Avatar Mask要选择对应的骨骼类型,对于Generic类型骨骼,如果想屏蔽某个骨骼,不勾选对应的骨骼Transform就行了
2 动画类型选择与骨骼对应的类型
3 把表情动画加到AniamtorController里对应的Layer下,Layer设置好Avatar Mask,调整好权重 - 在Animator所在GameObject隐藏后再显示出来,激活的动画会变成默认动画,而不是上一个动画。
- 立即播放动画到某一时刻
1
2
3animator.Play(animState)
animator.Update(0)
animator.Update(time)
场景加载
- LoadLevel 会加载场景的环境配置,也就是RenderSettings里的参数,包括天空盒,而LoadLevelAdditive则不会
- 5.0到5.1,Android版场景Assetbundle在编辑器下无法正确加载,但是真机下是正常的。而Webplayer版的AB在Android平台的编辑器里是可以正常加载的,但在真机里是无法加载的。
- Android下PlayerSettings/Graphics Level要设置为Force OpenGLES2.0,否则加载场景Assetbundle后,会无法显示天空盒,所有Shader也会不正常。
杂项
刚体与受力
- 刚体要连续受力,才会有受力表现,也就是在Update里连续调用受力接口。并且一个物体上所有刚体都受力才会有受力表现。
一些限制
- 一个模型最多65535个顶点,超过此数量的模型在运行时将被Unity自动分割为多个模型
图形性能分析
- 面数 Batches
- 最影响效率的是角色
- 面数高并不可怕,可怕是Batch多
- 如果发现渲染性能有问题,可以用排除法,就是把场景里的东西一点一点删掉,看看是什么影响了性能。
Android
- apk本身是一个压缩包,不能用普通文件系统的API来存取,可以用WWW和Zip API来读取。
- 使用WWW来读取本地文件时要加file://前缀
- 首选项Player->Write Access要设置成External(SDCard)才能对Application.persistentDataPath进行写操作,此时该目录为/Android/data/包名/files/(此目录可写),否则是/data/data/包名(此目录不可写)
打包相关
- 有依赖的AssetBundle(简称AB),只有所有依赖的AB都在内存(不用加载AB内对象)才能加载此AB内的资源,否则可能引起崩溃,已知的一种崩溃原因是:加载的对象带有Animator组件,在克隆该对象时会崩溃
- 5.0-5.3,在使用LoadLevelAsync加载场景AB包时,会出现无法正确加载光照图的BUG,目前的解决方式是将场景打包为Prefab,手动加载光照图
- FBX的压缩比大概在10%-20%之间
2015 Mobile图形限制
- 场景7万面,同屏40-60批次,包括灯光,水,粒子
- 精细模型1万面,133根骨骼
- UI支持最大分辨率1920X1080,实际制作缩小为0.625倍
图片质量
- filter,采样算法
- point(no filter) 不过滤,可能会出算边缘锯齿,但类似2x2 1x1的小图片要用这种,其它过滤算法使用小图边缘不是纯色,而是从中间深色过渡到边缘颜色。
-
- point(no filter) 不过滤,可能会出算边缘锯齿,但类似2x2 1x1的小图片要用这种,其它过滤算法使用小图边缘不是纯色,而是从中间深色过渡到边缘颜色。
FAQ
- 5.0-5.1 SampleAnimation 在Android下都会崩溃
- 为什么在没有LOD,可见页数不变的情况下,物体离摄像机越远,帧率越高?
- 如何计算图片所占用的内存数量?
- 为什么同材质的不同粒子发射器会在运行时合并批次?动态合并已关闭。
- 使用同样材质的多个粒子发射器只会占用一个批次?
- 透明贴图有几种方法?
- Alpha通道
- 图片本身背景填充色不是100%
- 自定义Shader,以某种颜色作为Alpha值
- GameObject references runtime script in scene file. Fixing!
出现这种错误首先Reimport All试试 - 运行时显示Unable to find shaders used for the terrain engine. Please include Nature/Terrain/Diffuse shader in Graphics settings.
5.0以后要包含三个Shader
Nature/Terrain/Standard (Only adding this solved the same problem for me)
Nature/Terrain/Diffuse
Nature/Terrain/Specular - Texture2D.ReadPixels() 在Windows与Editor下是以左上角为原点,在Android下是以右下角为原点
- 工程画质的设置(Quality)会影响到图片压缩的质量,网格的平滑程度
- 美术工程与客户端工程是两个不同的工程时,美术工程编译出来的Assetbundle在某些情况下,在客户端加载了AB后可能会出现无法加载Shader的情况。
可能的原因:- 美术工程的配置文件不正确,如果下三个配置文件之一或全部可能引起该问题:

- 美术工程的配置文件不正确,如果下三个配置文件之一或全部可能引起该问题:
- 运行时Transform的参数不能设置了
可参原因:- Animator的Controller中有的动画对根节点K帧了,不论这个动画是否在运行,都会导致Transform的参数不能改变

- Animator的Controller中有的动画对根节点K帧了,不论这个动画是否在运行,都会导致Transform的参数不能改变
- 清除工程历史记录
http://blog.csdn.net/i1tws/article/details/51098838 渲染顺序
在ZTest开启的情况下,由Z值决定。
其它情况下,渲染顺序为:Render queue > sorting layer > order in layer
UGUI的UI内部由节点顺序决定前后关系。UI在transparent queue,所以有时候可能会和粒子的显示顺序产生冲突,此时可以调整UI的Sorting layer
unity crash 原因收集
- Assetbundle关联的Assetbundle发生了变化,而原Assetbundle没有更新,加载这个的Assetbundle可能会崩溃
可能的Backtrace:
0x0000000140D63DC6 (Unity) AnimationClip::GetRuntimeAsset
0x000000014113F4CD (Unity) mecanim::animation::EvaluateBlendTree
0x000000014115922E (Unity) mecanim::statemachine::DoBlendTreeEvaluation
0x000000014115B15D (Unity) mecanim::statemachine::EvaluateState
0x000000014115B9DA (Unity) mecanim::statemachine::EvaluateStateMachine
0x00000001411159B5 (Unity) AnimatorControllerPlayable::UpdateGraph
0x0000000140D926C4 (Unity) Animator::UpdateAvatars
0x0000000140D935F1 (Unity) Animator::UpdateWithDelta
0x0000000140F442EE (Unity) Animator_CUSTOM_Update

