Unity3d查找游戏对象

Unity3D查找游戏对象的方法分为三类:GameObject查找、transform查找、Resources查找
一、GameObject查找
(1)GameObject.Find
参数为名字或者路径(也可以理解为绝对路径和相对路径)

绝对路径以“/”开头,例如

GameObject.find("/a/b")

使用规范
1、无法查找隐藏对象(active=false)
2、递归遍历查找,效率低,应该将查询写在start中保存应用,不应该写在update中查找
(2)GameObject.FindWithTag
(3)GameObject.FindGameObjectsWithTag
二、Transform
支持隐藏对象查找;支持路径查找;查找隐藏对象的前提是(transform所在的根节点必须可见,即active=true)

GameObject root = GameObject.Find("root");

root.SetActive(false); // 根节点为空

// 总是查找失败

root.transform.Find("root/AnyChildObjectName");

三、Resources.FindObjectsOfTypeAll

GameObject[] pAllObjects = (GameObject[])Resources.FindObjectsOfTypeAll(typeof(GameObject));
 
foreach (GameObject pObject in pAllObjects)
{
if (pObject.transform.parent != null)
{
continue;
}
 
if (pObject.hideFlags == HideFlags.NotEditable || pObject.hideFlags == HideFlags.HideAndDontSave)
{
continue;
}
 
if (Application.isEditor)
{
string sAssetPath = AssetDatabase.GetAssetPath(pObject.transform.root.gameObject);
if (!string.IsNullOrEmpty(sAssetPath))
{
continue;
}
}
 
Debug.Log(pObject.name);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值