一:不太理想的方式
- 使用unity提供的SetActive。
缺点:①:会导致网格重建,会导致内存分配,触发GC,,导致耗时。
②:会引起OnEnable和OnDisanle调用,有初始化的会有消耗。 - 改变GameObject的Position,移动到屏幕外,使相机不在渲染此物体。
缺点:会导致自身和所有子节点进行位置计算 - 改变GameObject的缩放,Vector3.zero-Vector3.one
二:理想的方式
- 修改GameObject的layer,使得他在Camerad的CullingMask之外,使相机不在渲染此物体。
- MeshRender.enable = true/false
- 在C#层设置变量来标识相应的go处于Active还是非Active状态,对Active进行SetActive(true)时,“底层”会进行判断,但调用的时候,就已经是从C#层调用底层,导致开销较高。在C#层判断好,就避免了让底层判断。