前情概要
提示:此项目发布于WebGL端 需要减小包体大小,提高加载速度
因光照贴图的文件太大,所以使用了AssetBundle来进行场景中资源的加载,但是在加载光照贴图的时候,发现了一个问题,就是需要指认哪些游戏物体,是使用此光照贴图的,不然光照贴图加载出来,会出现错误的情况
使用下面的脚本,即可实现一键筛选场景中挂载了特定的光照贴图
代码部分
using UnityEngine;
public class FindObjectsWithLightmap : MonoBehaviour
{
public Texture2D targetLightmap;
[ContextMenu("绑定")]
void AddTagInObject( )
{
GameObject[] sceneObjects = GameObject.FindObjectsOfType<GameObject>();
foreach (GameObject obj in sceneObjects)
{
Renderer renderer = obj.GetComponent<Renderer>();
if (renderer != null && renderer.lightmapIndex != -1)
{
// 获取物体的光照贴图
Texture2D lightmap = LightmapSettings.lightmaps[renderer.lightmapIndex].lightmapColor;
// 检查光照贴图是否匹配目标贴图
if (lightmap == targetLightmap)
{
obj.tag = "Lightmap3";//操作光照贴图物体的标签Tag
// 物体使用了目标光照贴图
Debug.Log("Object " + obj.name + " uses the target lightmap.");
}
}
}
}
}
如何使用
可以新建一个空物体,然后把此脚本挂载上。
把想查询的光照贴图放入 点击下图的按钮即可完成