1.禁用未使用的脚本和对象
1.禁用未使用的脚本和对象
禁用未使用的脚本和对象是指在特定游戏类型中, 对那些不在玩家视野内采用不处理他们的优化方案
1).Unity的视锥剔除和遮挡剔除
a.视锥剔除: 自动剔除相机之外的游戏对象, 只影响渲染系统, 不会绘制被剔除的对象
b.遮挡剔除: 剔除虽然在相机视野内, 但被其他物体挡住的对象; 同样是只影响渲染系统, 防止浪费GPU绘制不可见的物体
Unity中的视锥剔除和遮挡剔除其实只会优化GPU渲染层面的性能, 对象身上依附的各种组件还是会照常执行, 并不能起到禁
用未使用的脚本和对象, 优化CPU性能的目的
2).OnBecameVisible和OnBecameInvisible函数
a.OnBecameVisible
在渲染器(Renderer)对任何摄像机(主摄像机、UI摄像机、小地图摄像机、Scene视图摄像机
等)可见时调用
b.OnBecameInvisible
在渲染器(Renderer)对任何摄像机(主摄像机、UI摄像机、小地图摄像机、Scene视图摄像机
等)都不可见时调用
注:
a.Scene图摄像机也会导致调用该函数
b.所依附的对象上必须有Renderer渲染器相关组件
c.对象失活后, 由于渲染器也会失活, 这两个函数不再响应
d.即使这两个函数所在的组件失活, 只要渲染器存在, 就会响应
3).利用距离禁用对象
过判断需要禁用的对象和玩家或摄像机距离过远时主动禁用对象
if( (this.transform.position - otherTrans.position).sqrMagnitude >= 2500 )
{
}
4).主动判断视锥范围
a.GeometryUtility.CalculateFrustumPlanes
用于获取摄像机视锥体六个平面
b.GeometryUtility.TestPlanesAABB
用于判断一个AABB包围盒是否与一组平面(如视锥体)相交或包含, 返回值: 如果包围盒在平面组
的内部(或相交)返回true, 否则返回false(即完全在外面)