Unity基础API详解-GameObject类-获取组件与获取物体

获取物体/寻找物体

在这里插入图片描述

Find()

public static GameObject Find(string name);
此方法是遍历场景内所有物体,找出匹配物体,在大型复杂场景慎用,特别在Update慎用;
其中name中可以利用/指定搜索路径;
在这里插入图片描述

FindGameObjectsWithTag()

public static GameObject[] FindGameObjectsWithTag(string tag);
根据tag进行对象检索,返回的是对象数组;
tag需要提前设定好才能使用,tag为空或者未预设都会报错;

未预设报错:

在这里插入图片描述

空值报错:

在这里插入图片描述

寻找tag为player的物体数组:

void Start () {
        Object = GameObject.FindGameObjectsWithTag("Player");
        if (Object!=null) {
            Debug.Log(Object.Length);
            Debug.Log(Object[0].name);
        }                      
	}

在这里插入图片描述

FindWithTag()

public static GameObject FindWithTag(string tag);
根据tag进行对象检索,返回的是单个对象;
tag需要提前设定好才能使用,tag为空或者未预设都会报错;

寻找tag为player的物体:

void Start () {
        Object = GameObject.FindGameObjectsWithTag("Player");
        if (Object!=null) {
            Debug.Log(Object.name+"找到");
        }                      
	}

在这里插入图片描述

获取组件/寻找组件

GetComponent

public Component GetComponent(Type type);
获取遍历的第一个对应组件;

//第一种调用方法
 Transform trans = gameObject.GetComponent(typeof(Transform)) as Transform;
 //第二种调用方法
  Transform trans = gameObject.GetComponent<Transform>();

GetComponentInChildren

public Component GetComponentInChildren(Type type);
public Component GetComponentInChildren(Type type, bool includeInactive);
在场景中物体本身及子物体中深度优先遍历,获取遍历的第一个对应组件;
includeInactive:选择是否活跃的对象组件;

//单参数第一种调用方法
 Transform trans = gameObject.GetComponentInChildren(typeof(Transform)) as Transform;
 //单参数第二种调用方法
  Transform trans = gameObject.GetComponentInChildren<Transform>();
  
//多参数第一种调用方法
 Transform trans = gameObject.GetComponentInChildren(typeof(Transform)true) as Transform;
 //多参数第二种调用方法
  Transform trans = gameObject.GetComponentInChildren<Transform>(true);

GetComponentInParent

public Component GetComponentInParent(Type type);
在场景中物体本身及父物体中遍历,获取遍历的第一个对应组件;

//第一种调用方法
 Transform trans = gameObject.GetComponentInParent(typeof(Transform)) as Transform;
 //第二种调用方法
  Transform trans = gameObject.GetComponentInParent<Transform>();

GetComponents

public Component [] GetComponents(类型type);
获取遍历的对应组件数组;

//第一种调用方法
 Transform[] trans = gameObject.GetComponents(typeof(Transform)) as Transform;
 //第二种调用方法
  Transform[] trans = gameObject.GetComponents<Transform>();

GetComponentsInChildren

public Component[] GetComponentsInChildren(Type type, bool includeInactive = false);
在场景中物体本身及子物体中深度优先遍历,获取遍历的对应组件数组;
includeInactive:选择是否活跃的对象组件;

//单参数第一种调用方法
 Transform trans = gameObject.GetComponentsInChildren(typeof(Transform)) as Transform;
 //单参数第二种调用方法
  Transform trans = gameObject.GetComponentsInChildren<Transform>();
  
//多参数第一种调用方法
 Transform trans = gameObject.GetComponentsInChildren(typeof(Transform)true) as Transform;
 //多参数第二种调用方法
  Transform trans = gameObject.GetComponentsInChildren<Transform>(true);

GetComponentsInParent

public Component[] GetComponentsInParent(Type type, bool includeInactive = false);
public Component[] GetComponentsInChildren(Type type, bool includeInactive = false);
在场景中物体本身及父物体中遍历,获取遍历的对应组件数组;
includeInactive:选择是否活跃的对象组件;

//单参数第一种调用方法
 Transform trans = gameObject.GetComponentsInParent(typeof(Transform)) as Transform;
 //单参数第二种调用方法
  Transform trans = gameObject.GetComponentsInParent<Transform>();
  
//多参数第一种调用方法
 Transform trans = gameObject.GetComponentsInParent(typeof(Transform)true) as Transform;
 //多参数第二种调用方法
  Transform trans = gameObject.GetComponentsInParent<Transform>(true);
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值