整理一下在写Unity编辑器时经常需要用到的接口。
目录
一、Selection 获得Project面板下选中的路径信息
二、Directory 获得路径下的文件或文件夹信息
三、AssetDatabase 获得资源相关信息
四、File 文件操作
五、EditorUtility、GUILayout编辑器布局 默认垂直布局
六、还比较常用的类
七、一些应用
1.Selection.GetFiltered 过滤选中的文件
常用方法Selection.GetFiltered
2.Selection.selectionChanged 变换选中时的事件通知,在编辑器下监听,可以在变化时才执行Repaint更新编辑器,减少OnGUI的压力。
3.SelectionMode 选中过滤模式,这里只列举比较常用的
Unfiltered --> 不过滤,返回所有文件
TopLevel --> 只返回顶层文件,顶层下的将会被过滤
Assets --> 返回选中的资源
ExcludePrefab --> 排除预制件
4.注意
在Project右侧操作面板时才会有效,拿到路径信息后可以进行下一步的操作
5.Selection.objects 选中的物体
1.Directory.CreateDirectory 创建文件夹目录
2.Directory.GetDirectories 获得路径下文件夹目录
3.Directory.GetFiles 获得路径下的文件
4.searchPattern 匹配文件规则
“*”所有文件
“*.prefab”预制体文件等
5.SearchOption 搜索规则
TopDirectoryOnly --> 只操作当前目录下的
AllDirectories --> 操作当前且所有子目录下的
1.AssetDatabase.GetAssetPath 获取资源路径,传入UnityEngine.Object
2.AssetDatabase.LoadAssetAtPath 通过路径获取资源
3.AssetDatabase.GetDependencies 获取依赖
4.AssetDatabase.SaveAssets 保存修改
5.AssetDatabase.Refresh 刷新
6.AssetDatabase.ImportAsset 导入资源
1.File.Copy(src, dst) 复制
2.File.Exists(path) 文件是否存在
3.File.ReadAllBytes(file) 读取文件字节
4.File.WriteAllBytes(file) 写入文件字节
1.BeginHorizontal --- --- --- --- --- EndHorizontal 水平布局
2.BeginVertical 垂直布局
EndVertical
3.BeginScrollView -- EndScrollView 滑动
4.LabelField 文字 ObjectField物体 Slider滑动条
5.Button 按钮 TextFile文字
6.EditorUtility.OpenFilePanel("open", "e:/", ".txt") 打开文件浏览器,选择文件后返回路径
1.PrefabUtility 预设操作
PrefabUtility.InstantiatePrefab将预制体实例化
PrefabUtility.SavePrefabAsset 将关联的预制体保存
2.EditorUtility 编辑器工具类 提示框 进度条框等
EditorUtility.DisplayDialog("这里是提示框", "DisplayDialog", "确定") EditorUtility.DisplayProgressBar("这里是进度提示", "刷新提示信息", 0.5f)选中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(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);
}
}