整理一下在寫Unity編輯器時經常需要用到的接口。
目錄
一、Selection 獲得Project面板下選中的路徑信息
五、EditorUtility、GUILayout編輯器佈局 默認垂直佈局
一、Selection 獲得Project面板下選中的路徑信息
1.Selection.GetFiltered 過濾選中的文件
常用方法Selection.GetFiltered<UnityEngine.Object>(SelectionMode.Assets),拿到選中的文件路徑,可以多選操作,得到Assets目錄下的路徑名。
2.Selection.selectionChanged 變換選中時的事件通知,在編輯器下監聽,可以在變化時才執行Repaint更新編輯器,減少OnGUI的壓力。
3.SelectionMode 選中過濾模式,這裏只列舉比較常用的
Unfiltered --> 不過濾,返回所有文件
TopLevel --> 只返回頂層文件,頂層下的將會被過濾
Assets --> 返回選中的資源
ExcludePrefab --> 排除預製件
4.注意
在Project右側操作面板時纔會有效,拿到路徑信息後可以進行下一步的操作
5.Selection.objects 選中的物體
二、Directory 獲得路徑下的文件或文件夾信息
1.Directory.CreateDirectory 創建文件夾目錄
2.Directory.GetDirectories 獲得路徑下文件夾目錄
3.Directory.GetFiles 獲得路徑下的文件
4.searchPattern 匹配文件規則
“*”所有文件
“*.prefab”預製體文件等
5.SearchOption 搜索規則
TopDirectoryOnly --> 只操作當前目錄下的
AllDirectories --> 操作當前且所有子目錄下的
三、AssetDatabase 獲得資源相關信息
1.AssetDatabase.GetAssetPath 獲取資源路徑,傳入UnityEngine.Object
2.AssetDatabase.LoadAssetAtPath 通過路徑獲取資源
3.AssetDatabase.GetDependencies 獲取依賴
4.AssetDatabase.SaveAssets 保存修改
5.AssetDatabase.Refresh 刷新
6.AssetDatabase.ImportAsset 導入資源
四、File 文件操作
1.File.Copy(src, dst) 複製
2.File.Exists(path) 文件是否存在
3.File.ReadAllBytes(file) 讀取文件字節
4.File.WriteAllBytes(file) 寫入文件字節
五、EditorUtility、GUILayout編輯器佈局 默認垂直佈局
1.BeginHorizontal --- --- --- --- --- EndHorizontal 水平佈局
2.BeginVertical 垂直佈局
。。
EndVertical
3.BeginScrollView -- EndScrollView 滑動
4.LabelField 文字 ObjectField物體 Slider滑動條
5.Button 按鈕 TextFile文字
6.基本上都可以直接定義到佈局類中查看使用方法
六、還比較常用的類
1.PrefabUtility 預設操作
PrefabUtility.InstantiatePrefab將預製體實例化
PrefabUtility.SavePrefabAsset 將關聯的預製體保存
2.EditorUtility 編輯器工具類 提示框 進度條框等
七、一些應用
選中Text預製體複製,並輸出依賴。
public static void TestAll()
{
var obj = Selection.objects;
if (obj == null) return;
string path = AssetDatabase.GetAssetPath(obj[0]);
Debug.Log("選中資源的路徑" + path);
GameObject obj2 = AssetDatabase.LoadAssetAtPath<GameObject>(path);
Debug.Log("資源名字" + obj2.name);
File.Copy(path, path.Replace(".prefab", "copy.prefab"));
var paths = AssetDatabase.GetDependencies(path);
Debug.Log("輸出依賴:");
foreach(var p in paths)
{
Debug.Log(p);
}
}