一:前言
通过Selection类可以在编辑器下对选择的对象进行操作
二:常用方法
——Selection.activeObject
返回当前在Hierarchy面板上或Project文件夹下选择的对象Object,未选择则返回Null(选择多个则返回第一个选择的物体)
——Selection.activeGameObject
返回当前在Hierarchy面板上或Project文件夹下选择的游戏物体GameObject,未选择则返回Null(选择多个则返回第一个选择的游戏物体)
——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");
}
}