【Unity】判断物体是否会被渲染

版权声明:转载请表明出处 https://blog.csdn.net/RICKShaozhiheng/article/details/51614841

如果物体会被渲染的话,是需要调用OnWillRenderObject的方法的,这里给外界提供了isRendering:boolean

public var isRendering:boolean=false;
private var lastTime:float=0;
private var curtTime:float=0;

function Update()
{
         isRendering=curtTime!=lastTime?true:false;
         lastTime=curtTime;
}

function OnWillRenderObject()
{
         curtTime=Time.time;
}

另外网上还有一份代码,很久以前用过
- 对于2D带有SpriteRenderer的物体,传入SpriteRenderer.bounds
- 对于3D物体,传入Mesh.bounds

原理:传入一个bounds,是一个物体的范围边界,然后根据摄像机获取视锥体的六个面(planes),调用GeometryUtility.TestPlanesAABB(planes, bounds)判断bounds和planes构成的空间有没有重合的部分。

public static bool IsVisibleFrom(this Bounds bounds, Camera camera)
{
        Plane[] planes = GeometryUtility.CalculateFrustumPlanes(camera);
        return GeometryUtility.TestPlanesAABB(planes, bounds);
}
展开阅读全文

没有更多推荐了,返回首页