1. 程式人生 > >unity3d 獲取遊戲物件

unity3d 獲取遊戲物件

可以得到四個目的:

1、獲取GameObject的所有子物體;

2、獲取場景所有的物體/指定型別的物體;

3、獲取專案中Resource目錄下的所有檔案/指定型別檔案;

4、獲取專案中任意目錄下的所有檔案/指定型別檔案; 

//查詢指定物件的子物體
GameObject go;
//返回TransfTransform[]
go.GetComponentsInChildren(typeof(Transform), true);
go.transform.GetComponentsInChildren();
go.GetComponentsInChildren();


  //遍歷場景中所有物體,獲取泛型T型別物體
object[] gameObjects;
gameObjects = GameObject.FindSceneObjectsOfType(typeof(Transform));
foreach (Transform go in gameObjects)
{
if (go.GetComponent() != null)
{
//獲取成功,新增相關操作
}
}


//獲取Resource目錄下的檔案
Resources.LoadAll(path, typeof(MonoScript));//獲取path目錄xiade下的指令碼檔案
//獲取Project任意目錄下的檔案
string[] filePaths = Directory.GetFiles(Application.dataPath EventPath, "*.cs", SearchOption.AllDirectories);
for (int i = 0; i < filePaths.Length; i )
{
MonoScript fileItem;
int lastIndex = filePaths[i].LastIndexOf("/");
string fileName = filePaths[i].Remove(0, lastIndex 1);
fileItem = (MonoScript)AssetDatabase.LoadAssetAtPath("Assets" EventPath fileName, typeof(MonoScript));
if (fileItem != null && fileItem.GetClass().IsSubclassOf(typeof(BaseEvent)) && !events.Contains(fileItem))
{
events.Add(fileItem);
}
}