文章目录
  1. 1. 使用凹凸贴图
  2. 2. Shader
  3. 3. 换装
    1. 3.1. 挂点
  4. 4. 刀光
  5. 5. 着色器
  6. 6. 地形
  7. 7. 图像特效
  8. 8. Mobile相关
  9. 9. Asset store
  10. 10. Mecanim动画
  11. 11. 场景加载
  12. 12. 杂项
  13. 13. 刚体与受力
  14. 14. 一些限制
  15. 15. 图形性能分析
  16. 16. Android
  17. 17. 打包相关
  18. 18. 2015 Mobile图形限制
  19. 19. 图片质量
  20. 20. FAQ
  21. 21. unity crash 原因收集
  22. 22. Unity源代码
    1. 22.1. ui
  23. 23. 相关链接

使用凹凸贴图

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

unity3d blog about mobile

UNITY 4: AAA GRAPHICS AND PERFORMANCE FOR YOUR MOBILE GAMES

UNITY HARDWARE STATISTICS

Asset store

  • 下载目录:C:\Users\Administrator\AppData\Roaming\Unity\Asset Store

Mecanim动画

  • 连续两次调用CrossFade,则后一次的CrossFade不会替换前一个,而是会丢失
  • 根动画
    1 如果是Human自动就设置好了,只要启用Animator的Apply root motion就可以了
    2 如果是Generic
    a 设置模型骨骼的根节点,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
    3
    animator.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倍

图片质量

  1. filter,采样算法
    • point(no filter) 不过滤,可能会出算边缘锯齿,但类似2x2 1x1的小图片要用这种,其它过滤算法使用小图边缘不是纯色,而是从中间深色过渡到边缘颜色。
      -

FAQ

  • 5.0-5.1 SampleAnimation 在Android下都会崩溃
  • 为什么在没有LOD,可见页数不变的情况下,物体离摄像机越远,帧率越高?
  • 如何计算图片所占用的内存数量?
  • 为什么同材质的不同粒子发射器会在运行时合并批次?动态合并已关闭。
  • 使用同样材质的多个粒子发射器只会占用一个批次?
  • 透明贴图有几种方法?
    1. Alpha通道
    2. 图片本身背景填充色不是100%
    3. 自定义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的情况。
    可能的原因:
    1. 美术工程的配置文件不正确,如果下三个配置文件之一或全部可能引起该问题:
      MissDiffuseShader
  • 运行时Transform的参数不能设置了
    可参原因:
    1. 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

  • The same field name is serialized multiple times in the class or its parent class. This is not supported: -> AAAA(MonoBehaviour) BBBB(CCCC) DDDD

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

Unity源代码

ui

文章目录
  1. 1. 使用凹凸贴图
  2. 2. Shader
  3. 3. 换装
    1. 3.1. 挂点
  4. 4. 刀光
  5. 5. 着色器
  6. 6. 地形
  7. 7. 图像特效
  8. 8. Mobile相关
  9. 9. Asset store
  10. 10. Mecanim动画
  11. 11. 场景加载
  12. 12. 杂项
  13. 13. 刚体与受力
  14. 14. 一些限制
  15. 15. 图形性能分析
  16. 16. Android
  17. 17. 打包相关
  18. 18. 2015 Mobile图形限制
  19. 19. 图片质量
  20. 20. FAQ
  21. 21. unity crash 原因收集
  22. 22. Unity源代码
    1. 22.1. ui
  23. 23. 相关链接