Unity - 搬砖日志 - 获取 LODGroup 当前显示的 LOD 级别
最近 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 级别相关推荐
- Unity - 搬砖日志 - BRP 管线下的自定义阴影尺寸(脱离ProjectSettings/Quality/ShadowResolution设置)
文章目录 环境 原因 解决 CSharp 脚本 效果预览 - Light.shadowCustomResolution 效果预览 - Using Quality Settings 应用 Control ...
- Unity - 搬砖日志 - 打开项目时崩溃/或是运行不起unity的日志
崩溃日志目录所在:C:/Users/admins/AppData/Local/Unity/Editor/Editor.log 其中 admins 是你的 windows 登录账号名 打开该 Edito ...
- Unity - 搬砖日志 - Android 的 Optimized Frame Pacing - 对应 ProjectSettings 配置字段:androidUseSwappy
备忘用,因为 project settings 动不动,会提交一堆不相关的配置字段修改 Unity PlayerSettings 的 GUI 上 Optimized Frame Pacing 和 实际 ...
- Unity - 搬砖日志 - Occlusion Culling 关闭动态遮挡剔除 Renderer.allowOcclusionWhenDynamic = false
文章目录 CullDynamicObjectsWithUmbra 消耗 如何禁止 动态对象的遮挡剔除的消耗 写工具来遍历 Renderer.allowOcclusionWhenDynamic = fa ...
- Unity Shader - 搬砖日志 - 3D Noise, Noise 3D 相关
文章目录 GLSL noise 3d Project References 备忘,2D 的 noise 有纹理或是现成的比较多 3D noise 在 unity SG 出奇的没有封装 显示再 shad ...
- Unity Shader - 搬砖日志 - URP PBR (抄作业篇,持续更新~)
文章目录 目的 环境 PBR 主要渲染方程 D 项 GGB(desmos) D_Term 完整 Shader G 项 GGB G_Term 完整 Shader F 项 GGB F_Term 完整 Sh ...
- Unity Shader - 搬砖日志 - Dithering
文章目录 什么时 Dithering 色阶纹理图案 - Texture Dither Pattern 程序化 动态 Dithering - 让 RGBA8888 压缩到 RGBA4444 而没有明显色 ...
- Java:JVM+数据库(搬砖整理,侵权删文)
Java:JVM+数据库(搬砖整理,侵权删文) 十一.JVM 1.Java内存区域 1.说一下 JVM 的主要组成部分及其作用? JVM包含两个子系统和两个组件,两个子系统为Class loade ...
- CSGO/steam游戏搬砖项目入行前必看知识点汇总(一)
CSGO/steam游戏搬砖项目入行前必看知识点汇总(一) CSGO武器皮肤的入门级知识点,入行前一定要看 CSGO武器皮肤有什么用以及如何分类?有多少人已经彻底搞清楚了这个问题?今天这篇文章是专为新 ...
最新文章
- 079_用户屏幕的信息
- 时光老人的飞鸽传书下载
- 信息学奥赛一本通(2023:【例4.8】数据统计)
- mysql where不能用聚合函数_Mysql聚合函数对where语句筛选结果的影响
- SAP License:ERP之路
- Spring中各个jar包的作用
- linux 安装校园客户端,Ubuntu Linux环境下校园网客户端安装使用
- windows10桌面_32位windows10系统正式版推荐下载
- 华硕b365安装服务器系统,华硕b365主板装win10系统及bios设置教程(uefi+gpt)
- 【GNSS发展历史】
- 条码生成器如何生成GS1-128条码
- Python3.9.10标准库与语言参考等文档下载
- ADC输入噪声面面观——噪声是利还是弊?
- tensorflow量化感知训练_TensorFlow 8 bit模型量化
- Web渗透 不断更新
- 俄罗斯开发者赢得Facebook Hacker Cup大赛 楼天成获季军
- php 本周、上周、本月、上月
- 大数据时代,如何构建国家地质基础数据更新体系
- tencent腾讯——面试
- 破解WMp11的install