国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Unity 資源被引用查找(資源清理)工具

這篇具有很好參考價值的文章主要介紹了Unity 資源被引用查找(資源清理)工具。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

隨著需求的迭代,會發(fā)現(xiàn)項目中存在很多無用資源,這些無用的資源導致包體增大。想去刪除這些資源,但是害怕有其他資源引用這些文件,所以做了這個工具來檢索資源的被引用情況

直接上源碼吧

using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using UnityEditor;
using UnityEngine;
using Object = UnityEngine.Object;

namespace S 
{
    public class DependAnalysis : EditorWindow
    {
        private static Object[] targetObjects;
        private bool[] foldoutArr;
        private Object[][] beDependArr;
        private static int targetCount;
        private Vector2 scrollPos;
        string[] withoutExtensions = new string[]{".prefab",".unity",".mat",".asset",".controller"};
        
        [MenuItem("Assets/查找被引用", false, 19)]
        static void FindReferences()
        {
            targetObjects=Selection.GetFiltered<Object>(SelectionMode.Assets);
            targetCount=targetObjects == null ? 0 : targetObjects.Length;
            if (targetCount == 0) return;
            DependAnalysis window = GetWindow<DependAnalysis>("依賴分析");
            window.Init();
            window.Show();
        }

        void Init()
        {
            beDependArr=new Object[targetCount][];
            foldoutArr=new bool[targetCount];
            EditorStyles.foldout.richText = true;
            for (int i = 0; i < targetCount; i++)beDependArr[i] = GetBeDepend(targetObjects[i]);
        }

        private void OnGUI()
        {
            if (beDependArr.Length != targetCount) return;
            scrollPos=EditorGUILayout.BeginScrollView(scrollPos);
            Object[] objArr;
            int count;
            string objName;
            for (int i = 0; i < targetCount; i++)
            {
                objArr = beDependArr[i];
                count = objArr == null ? 0 : objArr.Length;
                objName = Path.GetFileName(AssetDatabase.GetAssetPath(targetObjects[i]));
                string info = count == 0
                    ? $"<color=yellow>{objName}【{count}】</color>"
                    : $"{objName}【{count}】";
                foldoutArr[i] = EditorGUILayout.Foldout(foldoutArr[i], info);
                if (foldoutArr[i])
                {
                    if (count>0)
                    {
                        foreach (var obj in objArr)
                        {
                            EditorGUILayout.BeginHorizontal();
                            GUILayout.Space(15);
                            EditorGUILayout.ObjectField(obj,typeof(Object));
                            EditorGUILayout.EndHorizontal();
                        }
                    }
                    else
                    {
                        EditorGUILayout.BeginHorizontal();
                        GUILayout.Space(15);
                        EditorGUILayout.LabelField("【Null】");
                        EditorGUILayout.EndHorizontal();
                    }
                }
            }
            EditorGUILayout.EndScrollView();
        }

        /// <summary>
        /// 查找所有引用目標資源的物體
        /// </summary>
        /// <param name="target">目標資源</param>
        /// <returns></returns>
        private Object[] GetBeDepend(Object target)
        {
            if (target == null) return null;
            string path = AssetDatabase.GetAssetPath(target);
            if (string.IsNullOrEmpty(path)) return null;
            string guid = AssetDatabase.AssetPathToGUID(path);
            string[] files = Directory.GetFiles(Application.dataPath, "*",
                SearchOption.AllDirectories).Where(s => withoutExtensions.Contains(Path.GetExtension(s).ToLower())).ToArray();
            List<Object> objects= new List<Object>();
            foreach (var file in files)
            {
                string assetPath = file.Replace(Application.dataPath,"");
                assetPath = "Assets"+assetPath;
                string readText = File.ReadAllText(file);
                
                if (!readText.StartsWith("%YAML"))
                {
                    var depends = AssetDatabase.GetDependencies(assetPath, false);
                    if (depends!=null)
                    {
                        foreach (var dep in depends)
                        {
                            if (dep==path)
                            {
                                objects.Add(AssetDatabase.LoadAssetAtPath<Object>(assetPath));
                                break;
                            }
                        }
                    }
                }else if (Regex.IsMatch(readText,guid))objects.Add(AssetDatabase.LoadAssetAtPath<Object>(assetPath));
            }
            return objects.ToArray();
        }

        private void OnDestroy()
        {
            targetObjects = null;
            beDependArr = null;
            foldoutArr = null;
        }
    }
}

工具截圖

unity清理無用資源,Unity 編輯器拓展,unity,游戲引擎,c#文章來源地址http://www.zghlxwxcb.cn/news/detail-718989.html

使用方法

  1. 選中需要檢測的一個或多個資源
  2. 右鍵–>查找被引用
  3. 打開分析面板,黃色字體顯示的部分為無用資源(有可能是代碼引用查不出來,需要根據(jù)工程特殊分析)

到了這里,關于Unity 資源被引用查找(資源清理)工具的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Unity_FairyGUI發(fā)布導入Unity編輯器資源報錯

    報錯: FairyGUI: settings for \\\'Assets/UI/XMUI/XMSubway_atlas0.png\\\' is wrong! Correct values are: (Generate Mip Maps=unchecked) UnityEngine.Debug:LogWarning (object) FairyGUI.UIPackage:LoadAtlas (FairyGUI.PackageItem) (at Assets/FairyGUI/Scripts/UI/UIPackage.cs:1305) FairyGUI.UIPackage:GetItemAsset (FairyGUI.PackageItem) (at Assets/FairyGUI/Scripts/UI/UIPa

    2024年02月04日
    瀏覽(24)
  • Unity 編輯器-查找所有未被使用的Prefab

    Unity 編輯器-查找所有未被使用的Prefab

    需求 接到一個需求,將Res里所有特效相關的prefab檢查一下,沒有使用的移除。 分析 先拆解一下需求,如下 代碼 結果 結果如圖所示。每組元素第一個為查找的prefab,之后的是使用了該prefab的預設或配表。 如果一組元素只有一個對象,則這個prefab無引用。 頂部的按鈕為指定功

    2024年02月16日
    瀏覽(27)
  • 【Unity 實用插件篇】| ReferenceFinder 引用查找插件,提高引擎查找使用效率

    【Unity 實用插件篇】| ReferenceFinder 引用查找插件,提高引擎查找使用效率

    前言 ReferenceFinder 是一個比較小眾的插件

    2024年02月16日
    瀏覽(23)
  • 編輯器腳本:Unity中如何查找哪些物體上有missing的腳本

    編輯器腳本:Unity中如何查找哪些物體上有missing的腳本

    編輯器中選中物體,判斷這些物體及子物體上是否有丟失的腳本 1、編輯器選中n個物體 2、獲取這n個物體及其它們的子物體,數(shù)據(jù)集記為A 3、A中全部物體判斷他們是否有null的腳本(MonoBehaviour) 4、判斷一個物體(obj)是否有空腳本的關鍵語句: obj.GetComponentsMonoBehaviour().Any(mon

    2024年02月14日
    瀏覽(25)
  • 【Unity編輯器】使用AssetDatabase創(chuàng)建、刪、改、加載資源

    AssetDatabase是Unity編輯器環(huán)境下的一種API,主要用于在代碼中對項目中的資源進行管理和操作。注意:AssetDatabase的這些方法只能在Unity編輯器環(huán)境下運行,不能在構建后的游戲中使用。在游戲運行時,你需要使用其他資源加載方法,如Resources.Load、AssetBundle加載或者Addressables等。

    2024年01月21日
    瀏覽(34)
  • Unity 編輯器資源導入處理函數(shù) OnPreprocessAudio :深入解析與實用案例

    Unity 編輯器資源導入處理函數(shù) OnPreprocessAudio :深入解析與實用案例

    點擊封面跳轉下載頁面 在 Unity 中,資源導入是一個非常重要的環(huán)節(jié),它決定了資源在項目中的使用方式和效果。Unity 提供了一系列的資源導入處理函數(shù),其中之一就是 OnPreprocessAudio 。這個函數(shù)可以在資源導入過程中對音頻資源進行自定義處理,例如修改導入設置、修改音頻

    2024年02月13日
    瀏覽(22)
  • Unity 編輯器資源導入處理函數(shù) OnPostprocessTexture :深入解析與實用案例

    Unity 編輯器資源導入處理函數(shù) OnPostprocessTexture :深入解析與實用案例

    點擊封面跳轉下載頁面 在Unity中,我們可以使用編輯器資源導入處理函數(shù)( OnPostprocessTexture )來自定義處理紋理資源的導入過程。這個函數(shù)是繼承自 AssetPostprocessor 類的,通過重寫這個函數(shù),我們可以在紋理資源導入完成后執(zhí)行一些自定義的操作。 首先,我們需要創(chuàng)建一個繼

    2024年02月09日
    瀏覽(19)
  • Unity 編輯器資源導入處理函數(shù) OnPreprocessTexture:深入解析與實用案例

    Unity 編輯器資源導入處理函數(shù) OnPreprocessTexture:深入解析與實用案例

    點擊封面跳轉下載頁面 在Unity中,我們可以使用編輯器資源導入處理函數(shù)( OnPreprocessTexture )來自定義處理紋理資源的導入過程。這個函數(shù)是繼承自 AssetPostprocessor 類的,通過重寫這個函數(shù),我們可以在紋理資源導入之前執(zhí)行一些自定義的操作。 首先,我們需要創(chuàng)建一個繼承

    2024年02月12日
    瀏覽(18)
  • Unity 編輯器資源導入處理函數(shù) OnPostprocessAudio :深入解析與實用案例

    Unity 編輯器資源導入處理函數(shù) OnPostprocessAudio :深入解析與實用案例

    點擊封面跳轉下載頁面 在Unity中,我們可以使用編輯器資源導入處理函數(shù)( OnPostprocessAudio )來自定義處理音頻資源的導入過程。這個函數(shù)是繼承自 AssetPostprocessor 類的,通過重寫這個函數(shù),我們可以在音頻資源導入完成后執(zhí)行一些自定義的操作。 首先,我們需要創(chuàng)建一個繼

    2024年02月14日
    瀏覽(21)
  • 盤點Unity幾款編輯器擴展工具

    盤點Unity幾款編輯器擴展工具

    unity 編輯器一個不容忽視的強大之處就是非常易于自定義擴展工具,來滿足各種各樣的美術、策劃及程序上的需求。今天為大家介紹Asset Store資源商店中幾款實用的編輯器擴展工具,幫助大家直接在Unity編輯器中完成3D建模與調整工作,免去與其它軟件進行數(shù)據(jù)轉換的過程,從

    2024年04月09日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包