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 ( 即完全在外面)