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

如果物体会被渲染的话,是需要调用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);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值