Unity3d 查找所選的是否引用過某資源


一、使用方式:

1、選擇要被查找的資源,右鍵->Find Reference

 

2、把資源拽入Res,點Find

 

3、輸出結果見Console

 

//代碼

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


public class FindReference : ScriptableWizard
{
    public UnityEngine.Object Res;

    // Use this for initialization
    void Start()
    {

    }

	[MenuItem("Assets/Find Reference")]
    public static void OpenDialog()
    {
		DisplayWizard<FindReference>("Find Reference Object In Current Select", "Find", "Cancel");
    }

    void OnWizardCreate()
    {
        Find();
    }
    void OnWizardOtherButton()
    {
        Close();
    }


    public void Find()
    {
		EditorUtility.DisplayProgressBar("Find Reference", "Finding...", 0);

		var instanceId = Res.GetInstanceID();

		var gos = Selection.GetFiltered(typeof(UnityEngine.Object), SelectionMode.DeepAssets);

	    string log = "";


	    int i = 0;
	    try
	    {
			foreach (var go in gos)
			{
				var assetPath = AssetDatabase.GetAssetPath(go.GetInstanceID());
				var paths = AssetDatabase.GetDependencies(new[] { assetPath });
				foreach (var path in paths)
				{
					var res = AssetDatabase.LoadAssetAtPath(path, typeof(UnityEngine.Object));
					if (res.GetInstanceID() == instanceId)
					{
						log+= assetPath;
						log += "\n";
					}
				}
				EditorUtility.DisplayProgressBar("Find Reference", assetPath, i / gos.Length);
				i++;
			}
	    }
	    catch (Exception e)
	    {
			Debug.Log(e.Message);
	    }
	    finally
	    {
			EditorUtility.ClearProgressBar();
	    }
		

		Debug.Log(log);
    }

    

}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM