一键筛选场景中挂载指定光照贴图的游戏物体

前情概要

提示:此项目发布于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.");
                }
            }
        }
    }
}

如何使用

可以新建一个空物体,然后把此脚本挂载上。
把想查询的光照贴图放入 点击下图的按钮即可完成
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45375968/article/details/130808031