Unity查找物体的四大主流方法及区别

GameObject.Find()
Transform.Find()
GameObject.FindGameObjectsWithTag()
FindObjectsOfType()

不少新人在刚接触unity查找物体的方法时,因为没有认识到几种查找物体方法它们之间的区别,而遇到bug 即“空引用异常”报错,我在这里说明一下它们的区别,供大家参考。同时这几种方法也没有绝对的好与坏,每种方法都有其适合使用的一些情况。

GameObject.Find()

优点:

  • 使用简单方便
  • 不会因为重名而报错,同时查找的是自上而下的第一个物体

缺点

  • 不能查找被隐藏的物体,否则出现“空引用异常”,这是很多新人在查找出现空引用bug的原因。
  • 全局查找(遍历查找),查找效率低,很消耗性能。

代码演示:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GameObjectFind : MonoBehaviour {

    private GameObject thing;

	void Start () {

        thing = GameObject.Find("C4");
        thing.name = "thing";
		
	}
}

Transform.Find(),通过Transform组件查找子物体。

  • 用这个方法查找物体时,根节点一定要处于“显示”状态,不能被隐藏。
  • 用它查找孙物体及孙孙物体,一定要使用“绝对路径”,否则出现“空引
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值