Selection是一個(gè)靜態(tài)類,它的主要功能是獲取在project窗口中鼠標(biāo)選擇的對象或者是inspector窗口的當(dāng)前顯示的對象。它的字段有
activeGameObject
activeInstanceID
activeObject
activeTransform
gameObjects
instanceIDs
objects
transforms
其中activeGameObject和activeTransform是inspector窗口的當(dāng)前顯示對象對應(yīng)的GameObject和Transform。加入當(dāng)前并非是一個(gè)GameObject,那么activeGameObject為空,activeTransform也是一樣。activeInstanceID是選擇文件在工程中的唯一ID,通過這個(gè)ID可以找到唯一對應(yīng)的文件。objects是多選情況下得到的所有選擇的物體,這些物體可以是各種類型,一般地,無法解析的物體,如文件夾,普通的文件,默認(rèn)為Object類型。相比gameObjects,官方更加推薦使用transforms,它們的作用僅僅是對選擇的所有物體做類型匹配的篩選,返回篩選之后的結(jié)果。
在這些字段中,用得比較多的是activeObject,objects,因?yàn)槭腔?,所以我們可以做各種判定和處理。比如:
var objs=Selection.objects;
foreach(var obj in objs)
{
if(obj is GameObject)
Debug.log(obj.name);
}
上面的代碼就是遍歷選擇的所有物體,如果該物體為GameObject(Prefab也是GameObject),輸出該物體的名稱。
另外,Selection提供Contains方法來判斷選擇的物體做是否包含了某個(gè)物體,也提供GetFiltered方法來做篩選。