unity, 判断可见性
如果一个物体被unity判定为”退一万步讲也一定不可见“,则unity不会去渲染它,但是如果我们给此物体添加了逻辑,这个逻辑仍然会被执行。
因此,假如这个逻辑是巨耗性能的逻辑,比如说”mesh的每个顶点都按sin(t)波动“之类,那么我们需要手动根据可见性去优化这个逻辑,比如不可见就停了它,或者不可见时运行一个此逻辑的极简版等。
所以需要能获得物体的可见性。
方法1:
MeshRender.isVisible;
如果MeshRender.isVisible==true,说明unity认为这个mesh”退一万步讲也一定不可见“。
这个方法的好处是没有一点儿额外开销,因为在unity运行场景管理算法的时候这些东西都已经得到了,而且一般来讲最多也就是对数复杂度。
这个方法的局限性是如果gameObject没有MeshRender这个组件,例如是一个巨复杂的模型的根节点,那么这个方法没法直接用,只能把每个带MeshRender的子孙节点都遍历一遍。
方法2:
bool I_Can_See(GameObject Object) {
Plane[] planes = GeometryUtility.CalculateFrustumPlanes(Camera);
if (GeometryUtility.TestPlanesAABB(planes , Object.collider.bounds))
return true;
else
return false;
}
参考: http://answers.unity3d.com/questions/8003/how-can-i-know-if-a-gameobject-is-seen-by-a-partic.html
这个方法好处是
1,不依赖于是否存在MeshRender组件。
2,可以自建包围盒,增加了灵活性,甚至可以故意造一个错误的包围盒来用(比如比模型实际范围大一倍或者小一倍)。比如在复杂模型的根节点上建一个名为boundingBox的切点,为它添加一个boxCollider,调节这个boxCollider让它包围整个模型。
3,不用遍历子孙节点,直接用视截体planes去判断这个collider.bounds是否可见即可。
缺点是:这个判断是有一小点儿开销的,如果物体成百上千可能会导致可察觉的开销。
转载于:https://www.cnblogs.com/wantnon/p/4628465.html
unity, 判断可见性相关推荐
- Unity 判断两物体碰撞方向
Unity 判断两物体碰撞方向 问题描述:游戏玩家可以在两个平面之间不断进行跳跃,且出现玩家顶着上面平面飞着走的情况. 问题原因:玩家碰撞体与平面不断进行碰撞体检测,导致游戏玩家可以不断进行跳跃. 解 ...
- Unity判断手势的滑动方向,单点触摸和多点触摸,并获取刚触摸以及触摸结束事的坐标
Unity判断手势触摸的类型 ,判断手势的滑动方向,并获取刚触摸以及触摸结束事的坐标 本章咱们一起来看下unity对有触摸手势做出的响应 单点触摸 Input.touchCount==1 移动触摸 I ...
- unity 判断路径是否存在或者文件夹是否存在
目录 一.目的 1.想知道:unity 判断路径是否存在或者文件夹是否存在 1.想实现的功能:某路径下,检查是否有名字为"1"-"20"名字的文件夹. 二.参考 ...
- Unity 判断鼠标上下左右拖动
Unity 判断鼠标上下左右拖动 public class Logic : MonoBehaviour {private float StartMouseLocationX;private float ...
- Unity判断一个物体是否在相机范围内
Unity判断一个物体是否在相机范围内 思路 代码 注意点 思路 先说下思路,先把物体从世界坐标转到该相机的视口坐标viewPos, 如果满足这两个条件: 0<viewPos.x < 1 ...
- Unity判断PC本地的网络连接状态、获取网络时间
Unity判断PC本地的网络连接状态 [DllImport("winInet.dll")]//引用外部库 private static extern bool InternetGe ...
- unity判断鼠标移动方向_【反向元气骑士】用unity实现俯视角射击是一种怎样的体验...
哈喽大家好我是yumir. 最近沉迷元气骑士,自从官方把各种"bug"修复之后,这个游戏对我这种手残玩家来说实在是太难了.既然打不过,那我就自己写一个,不就是俯视角射击吗,分分钟给 ...
- Unity判断物体相对位置
目录 一:点乘(Dot).叉乘(Cross) 1:点乘(Dot) 2:叉乘(Cross) 二:利用这个计算方位 1:点乘(Dot) 2:叉乘(Cross) 一:点乘(Dot).叉乘(Cross) 1: ...
- Unity 判断物体是否是在相机视野内
你玩吃鸡游戏有没有这样的经历,往往只有当枪在你的视野内时,才可以捡起,而如果你背对枪,就算距离很近时,也没有办法捡起.如何用Unity来实现类似的功能呢,来学习吧! Mesh Renderer: Me ...
- unity判断范围内有物体_Unity 检测物体是否在相机视野范围内
需求: 类似NPC血条,当NPC处于摄像机视野内,血条绘制,且一直保持在NPC头顶. 开始: 网上查找资料,然后编写代码: public RectTransform rectBloodPos; voi ...
最新文章
- php 网站内容采集器 Snoopy
- 重庆市推进组建区块链数字资产交易所
- Centos7 安装 tomcat9 后访问慢且 shutdown.sh 报错,提示 8005 端口未启用
- U811.1接口EAI系列之六--物料上传--VB语言
- STM32H743+CubeMX-定时器TIM输出PWM(PWM Generation模式)
- Python使用ffmpeg下载m3u8拼接为视频
- 混淆矩阵评价指标_机器学习模型评价指标 -- 混淆矩阵
- hdu 4864 task 贪心
- Linux内核启动过程
- linux自己写摄像头驱动,详解linux 摄像头驱动编写
- 第1关:身份证归属地查询
- 科隆OPTIFLUX2100W/4100C分体式电磁流量计维修
- 如何导出html中的图片,一键保存网页中的全部图片
- PyS2:RDD编程基础(一)
- 百度点击算法核心内容大揭秘
- 移动硬盘读取速度一般是多少
- 1.14食油大学acm训练赛NO.6
- 华为首次自曝“天才少年”成果:入职不到一年就干成这件大事,网友:值 200 万年薪!...
- macOS 神器 Workflow ,让效率翻倍!
- 跳跃游戏 (贪心/动态规划/dfs)