飞道的博客

Unity总结整理编辑器常用接口

438人阅读  评论(0)

整理一下在写Unity编辑器时经常需要用到的接口。

目录

一、Selection 获得Project面板下选中的路径信息

二、Directory 获得路径下的文件或文件夹信息

三、AssetDatabase 获得资源相关信息

四、File 文件操作

五、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 编辑器工具类 提示框 进度条框等

EditorUtility.DisplayDialog("这里是提示框", "DisplayDialog", "确定")
EditorUtility.DisplayProgressBar("这里是进度提示", "刷新提示信息", 0.5f)

七、一些应用

选中Text预制体复制,并输出依赖。


  
  1. public static void TestAll()
  2. {
  3. var obj = Selection.objects;
  4. if (obj == null) return;
  5. string path = AssetDatabase.GetAssetPath(obj[ 0]);
  6. Debug.Log( "选中资源的路径" + path);
  7. GameObject obj2 = AssetDatabase.LoadAssetAtPath<GameObject>(path);
  8. Debug.Log( "资源名字" + obj2.name);
  9. File.Copy(path, path.Replace( ".prefab", "copy.prefab"));
  10. var paths = AssetDatabase.GetDependencies(path);
  11. Debug.Log( "输出依赖:");
  12. foreach( var p in paths)
  13. {
  14. Debug.Log(p);
  15. }
  16. }

 

 


转载:https://blog.csdn.net/u013012420/article/details/105709915
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场