43 lines
1.4 KiB
C#
43 lines
1.4 KiB
C#
#if UNITY_EDITOR
|
||
using System.Collections.Generic;
|
||
using System.IO;
|
||
using System.Linq;
|
||
using UnityEditor;
|
||
using UnityEngine;
|
||
|
||
/// <summary>
|
||
/// 编辑器测试运行用的工具
|
||
/// </summary>
|
||
public static class EditorTestUtility
|
||
{
|
||
public static Dictionary<string, string> prefabDict;
|
||
|
||
public static void InitPrefabDict()
|
||
{
|
||
prefabDict = new Dictionary<string, string>();
|
||
var prefabPaths = from prefabPath in AssetDatabase.GetAllAssetPaths()
|
||
where Path.GetExtension(prefabPath) == ".prefab"
|
||
select new {name = Path.GetFileNameWithoutExtension(prefabPath), path = prefabPath};
|
||
foreach (var prefabPath in prefabPaths)
|
||
if (!prefabDict.ContainsKey(prefabPath.name))
|
||
prefabDict.Add(prefabPath.name, prefabPath.path);
|
||
}
|
||
|
||
public static GameObject LoadGameObject(string name)
|
||
{
|
||
if (prefabDict == null)
|
||
InitPrefabDict();
|
||
string path;
|
||
GameObject result = null;
|
||
// ReSharper disable once PossibleNullReferenceException
|
||
if (prefabDict.TryGetValue(name, out path))
|
||
{
|
||
result = AssetDatabase.LoadAssetAtPath<GameObject>(path);
|
||
// 特殊,警告使用EffectBackup
|
||
if (path.StartsWith("Assets/Project3D/EffectBackup/"))
|
||
Debug.LogError("有物体试图调用EffectBackup路径的资源 " + path);
|
||
}
|
||
return result;
|
||
}
|
||
}
|
||
#endif |