您的位置:首页 > 移动开发 > Unity3D

Unity3d 查找所选的是否引用过某资源

2016-04-18 20:08 507 查看
一、使用方式:

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);
}

}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: