如果一个物体被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, 判断可见性相关推荐

  1. Unity 判断两物体碰撞方向

    Unity 判断两物体碰撞方向 问题描述:游戏玩家可以在两个平面之间不断进行跳跃,且出现玩家顶着上面平面飞着走的情况. 问题原因:玩家碰撞体与平面不断进行碰撞体检测,导致游戏玩家可以不断进行跳跃. 解 ...

  2. Unity判断手势的滑动方向,单点触摸和多点触摸,并获取刚触摸以及触摸结束事的坐标

    Unity判断手势触摸的类型 ,判断手势的滑动方向,并获取刚触摸以及触摸结束事的坐标 本章咱们一起来看下unity对有触摸手势做出的响应 单点触摸 Input.touchCount==1 移动触摸 I ...

  3. unity 判断路径是否存在或者文件夹是否存在

    目录 一.目的 1.想知道:unity 判断路径是否存在或者文件夹是否存在 1.想实现的功能:某路径下,检查是否有名字为"1"-"20"名字的文件夹. 二.参考 ...

  4. Unity 判断鼠标上下左右拖动

    Unity 判断鼠标上下左右拖动 public class Logic : MonoBehaviour {private float StartMouseLocationX;private float ...

  5. Unity判断一个物体是否在相机范围内

    Unity判断一个物体是否在相机范围内 思路 代码 注意点 思路 先说下思路,先把物体从世界坐标转到该相机的视口坐标viewPos, 如果满足这两个条件: 0<viewPos.x < 1 ...

  6. Unity判断PC本地的网络连接状态、获取网络时间

    Unity判断PC本地的网络连接状态 [DllImport("winInet.dll")]//引用外部库 private static extern bool InternetGe ...

  7. unity判断鼠标移动方向_【反向元气骑士】用unity实现俯视角射击是一种怎样的体验...

    哈喽大家好我是yumir. 最近沉迷元气骑士,自从官方把各种"bug"修复之后,这个游戏对我这种手残玩家来说实在是太难了.既然打不过,那我就自己写一个,不就是俯视角射击吗,分分钟给 ...

  8. Unity判断物体相对位置

    目录 一:点乘(Dot).叉乘(Cross) 1:点乘(Dot) 2:叉乘(Cross) 二:利用这个计算方位 1:点乘(Dot) 2:叉乘(Cross) 一:点乘(Dot).叉乘(Cross) 1: ...

  9. Unity 判断物体是否是在相机视野内

    你玩吃鸡游戏有没有这样的经历,往往只有当枪在你的视野内时,才可以捡起,而如果你背对枪,就算距离很近时,也没有办法捡起.如何用Unity来实现类似的功能呢,来学习吧! Mesh Renderer: Me ...

  10. unity判断范围内有物体_Unity 检测物体是否在相机视野范围内

    需求: 类似NPC血条,当NPC处于摄像机视野内,血条绘制,且一直保持在NPC头顶. 开始: 网上查找资料,然后编写代码: public RectTransform rectBloodPos; voi ...

最新文章

  1. php 网站内容采集器 Snoopy
  2. 重庆市推进组建区块链数字资产交易所
  3. Centos7 安装 tomcat9 后访问慢且 shutdown.sh 报错,提示 8005 端口未启用
  4. U811.1接口EAI系列之六--物料上传--VB语言
  5. STM32H743+CubeMX-定时器TIM输出PWM(PWM Generation模式)
  6. Python使用ffmpeg下载m3u8拼接为视频
  7. 混淆矩阵评价指标_机器学习模型评价指标 -- 混淆矩阵
  8. hdu 4864 task 贪心
  9. Linux内核启动过程
  10. linux自己写摄像头驱动,详解linux 摄像头驱动编写
  11. 第1关:身份证归属地查询
  12. 科隆OPTIFLUX2100W/4100C分体式电磁流量计维修
  13. 如何导出html中的图片,一键保存网页中的全部图片
  14. PyS2:RDD编程基础(一)
  15. 百度点击算法核心内容大揭秘
  16. 移动硬盘读取速度一般是多少
  17. 1.14食油大学acm训练赛NO.6
  18. 华为首次自曝“天才少年”成果:入职不到一年就干成这件大事,网友:值 200 万年薪!...
  19. macOS 神器 Workflow ,让效率翻倍!
  20. 跳跃游戏 (贪心/动态规划/dfs)

热门文章

  1. 一个简单的完全信息动态博弈的解答
  2. FineUI之使用SQL脚本从数据库表中生成对应的输入控件
  3. puppet的配置清单书写
  4. Mesos框架对比:Marathon 和 Aurora
  5. xamarin.android listview绑定数据及点击事件
  6. linux上jdk安装
  7. 教你手写Java层handler机制
  8. 机器学习:神经网络实现中的技巧
  9. [线筛五连]线筛欧拉函数
  10. Linux中文件的分类