Unity Editor 总结记录

524 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情

1、打包回调

需要给方法添加标签:

[PostProcessBuild(1)]

2、图标获取

Unity提供了图标库,图标获取的方法为:

iconRefresh = EditorGUIUtility.IconContent("Refresh");

此外,可以给图标设置提示内容,方便理解图标含义,代码如下:

iconRefresh.tooltip = "Refresh Version";

3、AssetDatabase

3.1 加载文件

文件加载方法:

AssetDatabase.LoadAssetAtPath(path);

3.2 获取路径

获取文件路径代码:

AssetDatabase.GetAssetPath(object);

获取所有资源路径:

AssetDatabase.GetAllAssetPaths();

3.3 导入资源

可以通过代码导入资源,使用方法如下:

AssetDatabase.ImportAsset(path);

3.4 创建资源

创建资源的方法:

AssetDatabase.CreateAsset(asset, path);
AssetDatabase.SaveAssets(); 
AssetDatabase.Refresh();

3.5 查找资源

代码可以查找资源,例如查找你Prefab:

AssetDatabase.FindAssets("t:prefab", new string[] { "Assets" });

4、禁用组件

可以过代码禁用组件,可以实现控制组件是否可用,用以Toggle等控制其他组件:

EditorGUI.BeginDisabledGroup(bool);
EditorGUI.EndDisabledGroup();

5、选中

定位文件位置,可用于生成文件后快速定位:

EditorGUIUtility.PingObject(object);

选中Inspector对象:

Selection.SetActiveObjectWithContext(obj, obj);

6、菜单

在菜单栏生成一个Tools/xxx的快捷按钮:

[MenuItem("Tools/xxx")]

通过菜单名执行编辑器操作:

EditorApplication.ExecuteMenuItem("Tools/xxx")

7、 进度条

生成进度条,并设置进度:

EditorUtillty.DisplayProgressBar("title", "info", 0);

8、打开目录

EditorUtillty.RevealInFinder(path);

9、添加?的文档跳转

[HelpURL("https://thoughts.teambition.com/workspaces/")]

10、选择

10.1 对象选择

//返回当前点击的场景游戏物体或Project Prefab(选择多个则返回第一个选择,未选择则返回null)
Selection.activeGameObejct

//返回当前点击的场景游戏物体transform
Selection.activeTransform 

//返回当前点击的场景游戏物体或Project资产文件
Selection.activeObject 

//返回一个数组,内容为当前点击场景物体或Project Prefab,非GameObject的选择不会加入数组。未选择返回长度为0的数组
Selection.gameObjects

//返回当前点击的场景物体或Project资源(数组)
Selection.objects

//返回当前点击的场景物体(数组)
Selection.transforms

//委托,选择变化时调用
Selection.selectionChanged

10.2 方法

//选择项中是否包含物体
public static bool Selection.Contains(int instanceID) 
public static bool Selection.Contains(Object obj)

//返回按类型与模式过滤当前选择
public static T[] GetFiltered<T>(SelectionMode mode);

//允许使用SelectionMode对选择类型进行颗粒度控制
public static Transform[] GetTransforms(SelectionMode mode);