Unity 代码获取物体

Unity 代码获取物体

🎮

Unity的几种查找物体的方式

按标签 按名称 按组件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class FindObj : MonoBehaviour
{
void Start()
{
print("按名称: " + GameObject.Find("name--01").name);
//name--01是游戏物体的面板名字
print("按标签(单个): " + GameObject.FindGameObjectWithTag("tag").name);


//查找到结果为所有符合的物体返回数组
GameObject[] Objs;
Objs = GameObject.FindGameObjectsWithTag("tag");
for (int i = 0; i < Objs.Length; i++)
{
print("按标签(多个): " + Objs[i].name);
}


//查找到结果为所有符合的物体返回单个数据
Button findObj = (Button)GameObject.FindObjectOfType(typeof(Button));
print("按类型查找(单个): " + findObj.name);


//查找到结果为所有符合的物体返回数组
Button[] findObjs = (Button[])GameObject.FindObjectsOfType(typeof(Button));
for (int i = 0; i < findObjs.Length; i++)
{
print("按类型查找(多个): " + findObjs[i].name);
}
}
}

获取子物体3种办法

1.GetComponentsInChildren()

这个是获取所有子物体(包括父物体)的方法。

1
2
3
4
5
6
7
8
9
Transform[] myTransforms = GetComponentsInChildren<Transform>();

foreach (var child in myTransforms)

{

    Debug.Log(child.name);

}

2.transform.Find()

此方法通过名字寻找特定子物体,只能寻找一级子物体,不能寻找二级子物体

1
Debug.Log(transform.Find("Child0"));//一级子物体

所以此方法适用于:只寻找一级子物体


3.transform.GetChild()

此方法是根据子物体的序号来获取子物体,只能获取一级的子物体,但是可以通过连续两次获取,获取到二级的子物体。

作者

发布于

2022-12-15

更新于

2023-01-10

许可协议