返回

Unity编辑器拓展-快捷查看资源被引用的状况

前端

在Unity项目开发过程中,经常会有重复被使用或重复的资源图片。在整理项目时,需要查看这些图片被哪些预制件引用,以便安全地进行清除。这时,可以利用AssetDataBase相关的API来查找资源。

首先,需要在编辑器中创建一个新的扩展。在菜单栏中选择“Assets”>“Create”>“Script”,然后将脚本命名为“AssetUsageFinder”。在脚本中,添加以下代码:

using UnityEngine;
using UnityEditor;
using System.Collections.Generic;

public class AssetUsageFinder : EditorWindow
{
    private Object asset;
    private List<Object> references;

    [MenuItem("Tools/Find Asset Usage")]
    public static void ShowWindow()
    {
        EditorWindow.GetWindow<AssetUsageFinder>("Find Asset Usage");
    }

    void OnGUI()
    {
        asset = EditorGUILayout.ObjectField("Asset:", asset, typeof(Object), false);

        if (GUILayout.Button("Find References"))
        {
            references = new List<Object>();
            FindReferences(asset);
        }

        if (references != null && references.Count > 0)
        {
            EditorGUILayout.LabelField("References:");
            foreach (Object reference in references)
            {
                EditorGUILayout.ObjectField("", reference, typeof(Object), false);
            }
        }
    }

    void FindReferences(Object asset)
    {
        string[] dependencies = AssetDatabase.GetDependencies(AssetDatabase.GetAssetPath(asset));
        foreach (string dependency in dependencies)
        {
            Object obj = AssetDatabase.LoadAssetAtPath<Object>(dependency);
            if (obj != asset)
            {
                references.Add(obj);
            }
        }
    }
}

然后,在编辑器中选择需要查看引用的资源,然后点击菜单栏中的“Tools”>“Find Asset Usage”选项。这时,将会弹出一个窗口,其中列出了所有引用了该资源的预制件。

这个扩展可以帮助您在整理项目时更有效地进行资源管理,避免重复使用或重复的资源图片。