在主线程运行的同时开启另一段逻辑处理来协助当前程序的执行,协同程序像多线程但不是多线程,协程在每帧结束之后检测yield条件是否满足。
Is Trigger = true 时作为触发器,碰撞器被物理引擎忽略没有碰撞效果。
至少一个为刚体,两者皆带有碰撞器。
ArrayList会把所有插入的数据当作Object处理,装箱拆箱操作费时,List是泛型类,功能与ArrayList类似,可避免装箱拆箱操作。
1.Asset和Library目录一起迁移
2.导出Package
3.asset server 功能
CharacterController可理解为受限的Rigidbody,具有物理效果但不完全真实。
sealed修饰的类为密封类,可防止其他类继承,修饰方法时可防止派生类重写此方法。
只能在包含该类的程序集中访问该类。
OnCollisionEnter——OnCollisionStay——OnCollisionExit
Awake——OnEnable——Start——Update——FixedUpdate——LateUpdate——OnGUI——OnDisable——OnDistroy
游戏界面可看到多相机混合结果。
Interface只定义方法不实现细节,抽象类中可以有方法实现。Interface的子类必须实现接口的所有方法。
在三维软件中预先打好光,输出光照贴图,通过引擎贴至场景,使之有光照感。
类是引用类型,结构体是值类型。
效果相同,均为通过关键字找到定义在函数中变量的内存地址。区别为ref必须初始化,out必须在函数里赋值。ref参数是引用,out参数为输出参数。
委托类似于一种安全的指针引用,在使用它时是当做类来看待而不是一个方法,相当于对一组方法的列表的引用。用处:使用委托使程序员可以将方法引用封装在委托对象内。然后可以将该委托对象传递给可调用所引用方法的代码,而不必在编译时知道将调用哪个方法。与C或C++中的函数指针不同,委托是面向对象,而且是类型安全的。
快速排序、选择排序、冒泡排序、插入排序
。。。。。。
四元数可避免万向锁,进行增量旋转。
在Update后调用,常进行相机跟随等操作,用于避免相机已推进,但视角中未有角色的空帧出现。
1.压缩自带类库
2.释放AssetBundle占用的资源
3.减低模型面数,降低骨骼数量,降低贴图大小
4.使用光照贴图,LOD,Prefab,Shader
5.减少临时变量
1.Resource.Load()
2.AssetBundle
https://www.cnblogs.com/zblade/p/6445578.html
对于OpenGL,绘制参数(状态值)的变更要比绘制大量顶点更耗费CPU。高速绘图即尽量在不改变状态值的情况下,一次DrawCall完成所有绘制。
Unity——PlayerSetting中:
Static Batching:将表明为Static的静态物体,如果相同材质球,Unity自动合并为Batch送往GPU。
Dynamic Batching:物体小于300面条件下,无论动静态物体,使用相同材质球,Unity会自动合并为Batch送往GPU。
若两物体材质仅纹理不同,可通过将纹理合并成大纹理,便可使用统一材质替代。
CPU
DrawCall影响的是CPU效率,物理组件、GC、代码质量也会影响CPU。
每次DrawCall时CPU需要做很多准备工作,而对于GPU工作量是不变的,因此降低DrawCall就是解放CPU在调用图形接口上的开销。
1. DrawCall Batching
2.纹理打包成图集减少材质使用
3.减少反光、阴影等效果,其会导致物体多次渲染
GPU
1.减少顶点数量
2.压缩图片,以适应显存宽带
3.使用纹理图集
4.使用光照纹理而非实时光照
5.LOD
6.遮挡剔除
7.使用Mobile版shader
内存
1.Unity内部内存
2.Mono的托管内存,引用类型。
3.对象池
值类型:int、float、struct...
引用类型:类的实例