最近 QA 同学需要在 某个 LODGroup 对象,当前显示的 LOD 是哪个级别的功能,所以上网搜索了一下,发现:Current LOD level - LOD Group Unity 也有人需求该功能,但是回答的人写得代码的不到想要的效果,所以自己重写了下面的代码


CSharp

//  2021/07/01
private static int GetLODCurShowLevel(Camera cam, LODGroup lodGroup)
{var inv_SceneViewCamHeight = 1.0f / (cam.pixelHeight - 6.0f);var lods = lodGroup.GetLODs();for (int lodIDX = 0; lodIDX < lods.Length; lodIDX++){var lod = lods[lodIDX];var renderers = lod.renderers;for (int renderIDX = 0; renderIDX < renderers.Length; renderIDX++){var renderer = renderers[renderIDX];var heightInScreen = cam.WorldToScreenPoint(renderer.bounds.min).y - cam.WorldToScreenPoint(renderer.bounds.max).y;var ratioInScren = heightInScreen * inv_SceneViewCamHeight;if (ratioInScren > lod.screenRelativeTransitionHeight){return lodIDX;}}}return -1;
}

第二种方法

// jave.lin 2021/07/02using UnityEngine;public class TestingStoreLODGroupCurLODLevel : MonoBehaviour
{public bool[] lodVisibleArr;public int GetCurLOD(){if (lodVisibleArr != null){var len = lodVisibleArr.Length;for (int i = 0; i < len; i++){if (lodVisibleArr[i]){return i;}}}return -1;}
}// jave.lin 2021/07/02using UnityEngine;public class TestingCheckVisibleChanged : MonoBehaviour
{public int belongLOD;public TestingStoreLODGroupCurLODLevel storeLOD;private void OnBecameInvisible(){if (storeLOD){storeLOD.lodVisibleArr[belongLOD] = false;}}private void OnBecameVisible(){if (storeLOD){storeLOD.lodVisibleArr[belongLOD] = true;}}
}private void SetupCheckLODInfo(GameObject go){var lodGroup = go.GetComponent<LODGroup>();if (lodGroup == null){return;}var storeLODComp = go.GetComponent<TestingStoreLODGroupCurLODLevel>();if (storeLODComp != null){// 设置过return;}storeLODComp = go.AddComponent<TestingStoreLODGroupCurLODLevel>();var lods = lodGroup.GetLODs();for (int lodIDX = 0; lodIDX < lods.Length; lodIDX++){var lod = lods[lodIDX];var renderers = lod.renderers;for (int rendererIDX = 0; rendererIDX < renderers.Length; rendererIDX++){var renderer = renderers[rendererIDX];var checkVisibleComp = renderer.gameObject.GetComponent<TestingCheckVisibleChanged>();if (checkVisibleComp == null){checkVisibleComp = renderer.gameObject.AddComponent<TestingCheckVisibleChanged>();}checkVisibleComp.belongLOD = lodIDX;checkVisibleComp.storeLOD = storeLODComp;}}storeLODComp.lodVisibleArr = new bool[lods.Length]; }private void UnSetupCheckLODInfo(GameObject go){var lodGroup = go.GetComponent<LODGroup>();if (lodGroup == null){return;}var storeLODComp = go.GetComponent<TestingStoreLODGroupCurLODLevel>();if (storeLODComp != null){GameObject.Destroy(storeLODComp);}var lods = lodGroup.GetLODs();for (int lodIDX = 0; lodIDX < lods.Length; lodIDX++){var lod = lods[lodIDX];var renderers = lod.renderers;for (int rendererIDX = 0; rendererIDX < renderers.Length; rendererIDX++){var renderer = renderers[rendererIDX];var checkVisibleComp = renderer.gameObject.GetComponent<TestingCheckVisibleChanged>();if (checkVisibleComp != null){GameObject.Destroy(checkVisibleComp);}}}}

References

  • Current LOD level - LOD Group Unity - 我也刚刚注册账号上去 提交 回复上面的代码

Unity - 搬砖日志 - 获取 LODGroup 当前显示的 LOD 级别相关推荐

  1. Unity - 搬砖日志 - BRP 管线下的自定义阴影尺寸(脱离ProjectSettings/Quality/ShadowResolution设置)

    文章目录 环境 原因 解决 CSharp 脚本 效果预览 - Light.shadowCustomResolution 效果预览 - Using Quality Settings 应用 Control ...

  2. Unity - 搬砖日志 - 打开项目时崩溃/或是运行不起unity的日志

    崩溃日志目录所在:C:/Users/admins/AppData/Local/Unity/Editor/Editor.log 其中 admins 是你的 windows 登录账号名 打开该 Edito ...

  3. Unity - 搬砖日志 - Android 的 Optimized Frame Pacing - 对应 ProjectSettings 配置字段:androidUseSwappy

    备忘用,因为 project settings 动不动,会提交一堆不相关的配置字段修改 Unity PlayerSettings 的 GUI 上 Optimized Frame Pacing 和 实际 ...

  4. Unity - 搬砖日志 - Occlusion Culling 关闭动态遮挡剔除 Renderer.allowOcclusionWhenDynamic = false

    文章目录 CullDynamicObjectsWithUmbra 消耗 如何禁止 动态对象的遮挡剔除的消耗 写工具来遍历 Renderer.allowOcclusionWhenDynamic = fa ...

  5. Unity Shader - 搬砖日志 - 3D Noise, Noise 3D 相关

    文章目录 GLSL noise 3d Project References 备忘,2D 的 noise 有纹理或是现成的比较多 3D noise 在 unity SG 出奇的没有封装 显示再 shad ...

  6. Unity Shader - 搬砖日志 - URP PBR (抄作业篇,持续更新~)

    文章目录 目的 环境 PBR 主要渲染方程 D 项 GGB(desmos) D_Term 完整 Shader G 项 GGB G_Term 完整 Shader F 项 GGB F_Term 完整 Sh ...

  7. Unity Shader - 搬砖日志 - Dithering

    文章目录 什么时 Dithering 色阶纹理图案 - Texture Dither Pattern 程序化 动态 Dithering - 让 RGBA8888 压缩到 RGBA4444 而没有明显色 ...

  8. Java:JVM+数据库(搬砖整理,侵权删文)

    Java:JVM+数据库(搬砖整理,侵权删文) 十一.JVM 1.Java内存区域 1.说一下 JVM 的主要组成部分及其作用? ​ JVM包含两个子系统和两个组件,两个子系统为Class loade ...

  9. CSGO/steam游戏搬砖项目入行前必看知识点汇总(一)

    CSGO/steam游戏搬砖项目入行前必看知识点汇总(一) CSGO武器皮肤的入门级知识点,入行前一定要看 CSGO武器皮肤有什么用以及如何分类?有多少人已经彻底搞清楚了这个问题?今天这篇文章是专为新 ...

最新文章

  1. 079_用户屏幕的信息
  2. 时光老人的飞鸽传书下载
  3. 信息学奥赛一本通(2023:【例4.8】数据统计)
  4. mysql where不能用聚合函数_Mysql聚合函数对where语句筛选结果的影响
  5. SAP License:ERP之路
  6. Spring中各个jar包的作用
  7. linux 安装校园客户端,Ubuntu Linux环境下校园网客户端安装使用
  8. windows10桌面_32位windows10系统正式版推荐下载
  9. 华硕b365安装服务器系统,华硕b365主板装win10系统及bios设置教程(uefi+gpt)
  10. 【GNSS发展历史】
  11. 条码生成器如何生成GS1-128条码
  12. Python3.9.10标准库与语言参考等文档下载
  13. ADC输入噪声面面观——噪声是利还是弊?
  14. tensorflow量化感知训练_TensorFlow 8 bit模型量化
  15. Web渗透 不断更新
  16. 俄罗斯开发者赢得Facebook Hacker Cup大赛 楼天成获季军
  17. php 本周、上周、本月、上月
  18. 大数据时代,如何构建国家地质基础数据更新体系
  19. tencent腾讯——面试
  20. 破解WMp11的install

热门文章

  1. 改进后的速算小游戏(2011211909 苟玲、2011211933 郝怡然)
  2. python3编译成pyc文件
  3. 【python】调用百度智能云API实现手写文字识别
  4. js大屏导出图片_js将canvas保存成图片并下载
  5. 伪原创文章技巧(如何提高伪原创文章的原创度)
  6. 路由器,你身边的“地雷”?
  7. 测试-APP端常见测试功能点
  8. 阻击黑客,你需要了解这些云安全“潜规则”
  9. 用python做课表_python模拟登陆urp教务处选课抓取课表
  10. Kanzi 的开机优化