1、Selection
通过Selection类可以在编辑器下对选择的对象进行操作
- Selection.activeObject
返回当前在Hierarchy面板上或Project文件夹下选择的对象Object,未选择则返回Null(选择多个则返回第一个选择的物体)
Debug.Log(Selection.activeObject.name);
- Selection.activeGameObject
返回当前在Hierarchy面板上或Project文件夹下选择的游戏物体GameObject,未选择则返回Null(选择多个则返回第一个选择的游戏物体)Project目录下只能选中预制体
Debug.Log (Selection.activeGameObject);
- Selection.activeTransform
返回当前在Hierarchy面板上选择的游戏物体的Transform,未选择则返回Null(选择多个则返回第一个选择的游戏物体)
- Selection.objects
返回当前在Hierarchy面板上或Project文件夹下选择的对象Object数组,未选择则数组长度则为0
- Selection.gameObjects
返回当前在Hierarchy面板上或Project文件夹下选择的游戏物体GameObject数组,未选择则数组长度则为0
- Selection.GetFiltered
返回Project文件夹下按类型和模式过滤选择后的结果
Texture[] textures = Selection.GetFiltered<Texture>(SelectionMode.Assets);
for (int i = 0; i < textures.Length; i++)
{
Debug.Log(textures[i]);
}
- Selection.transforms
返回当前在Hierarchy面板上选择的游戏物体Transform数组,未选择则数组长度则为0
- Selection.assetGUIDs
返回当前在Project文件夹下选择的资源GUID数组,通过GUID可以获取到资源的具体路径
string[] guids = Selection.assetGUIDs;
foreach (var temp in guids)
{
Debug.Log(AssetDatabase.GUIDToAssetPath(temp.ToString()));
}
- Selection.instanceIDs
返回当前在Hierarchy面板上或Project文件夹下选择的物体的instanceID
- Selection.Contains
判断选择的是否包含某个物体或instanceId
- Selection.SetActiveObjectWithContext和Selection.activeContext
这两个需要搭配使用,只有用SetActiveObjectWithContext设置后才能通过activeContext获取
- selectionChanged
选择的对象变化时的回调函数
public class SelectionTest : MonoBehaviour
{
private void Awake()
{
Selection.selectionChanged += OnSelectionChange;
}
/// <summary>
/// 选择的物体变化时调用的委托
/// </summary>
private static void OnSelectionChange()
{
Debug.Log("OnSelectionChange");
}
}
2、AssetDatabase
AssetDatabase是一个API,它允许您访问您项目中的资源。它提供了查找资源、加载资源、创建资源、删除资源和修改资源的方法。Unity 编辑器内部使用AssetDatabase保持跟踪资源文件和保持资源与引用他们的对象之间的关联。由于Unity需要保持跟踪项目文件夹中有所更改,如果你想访问或修改的资源数据,你应该始终使用AssetDatabase API,而不是系统文件。
AssetDatabase.ImportAsset("Assets/UI/cube.png", ImportAssetOptions.Default);
导入资源
AssetDatabase.LoadAssetAtPath("Assets/UI/cube.png", typeof(Texture2D)) as Texture2D;
加载资源
AssetDatabase.GetAssetPath(t)
获取资源在文件中的路径
AssetDatabase.CreateAsset(material, "Assets/Materials/myMaterials.mat");
将资源创建到文件中
AssetDatabase.RenameAsset("Assets/Materials/myMaterials.mat", "mynewMaterials");
资源重命名
AssetDatabase.MoveAsset("Assets/Materials/mynewMaterials.mat", "Assets/NewFolder");
将资源移动文件路径
AssetDatabase.CopyAsset("Assets/NewFolder/mynewMaterials.mat", "Assets/Materials/myMaterials.mat"));
赋值资源
AssetDatabase.MoveAssetToTrash(“Path”)
将资源移入回收站
AssetDatabase.DeleteAsset("路径r")
将资源删除
AssetDatabase.Refresh();
刷新文件夹
3、EditorUtility
EditorUtility.DisplayProgressBar(title, "信息", 3f);
显示或更新进度条
EditorUtility.ClearProgressBar();
删除进度条
EditorUtility.DisplayDialog(title, "消息", "OK");
显示模态对话框
EditorUtility.OpenFilePanel(title, "D:/", "扩展名");
显示打开文件 对话框并返回所选的路径名称
EditorUtility.OpenFolderPanel(title, "D:/学习", "默认名字");
显示打开文件夹 对话框并返回所选的路径名称
EditorUtility.SaveFilePanel(title, "D:/学习", "默认名字", "扩展名");
显示“保存文件”对话框并返回所选的路径名称。
EditorUtility.SaveFolderPanel(title, "D:/学习", "默认名字");
显示“保存文件夹”对话框并返回所选的路径名称。