物体的查找

GameObject.Find
通过名字或路径查找游戏对象
(1)使用
GameObject.Find("GameObject"); GameObject.Find("GameObject/ChildGameObject);
(2)注意
①无法查找隐藏对象,只要路径中存在任何一个节点是隐藏的,则查找不到该对象
②查找相当于递归遍历查找,虽使用方便但效率低下,建议在Start()函数中查找对象并保存引用,切忌在Update()中动态查找。
Transform.Find
(1)使用
transform.Find("GameObject");
(2)注意
①可以查找隐藏对象
②支持路径查找
③查找隐藏对象的前提是transform所在的根节点必须可见
GameObject.FindWithTag与GameObject.FindGameObjectsWithTag
通过标签查找物体,使用较少
Resources.FindObjectsOfTypeAll
返回指定类型的对象列表。主要用于编辑器中,eg。检测内存泄露、批量查找的功能等
(1)使用(即使root隐藏也能查找到)
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);
 }
全部评论

相关推荐

昨天 14:10
东南大学 Java
_可乐多加冰_:去市公司包卖卡的
点赞 评论 收藏
分享
小马云表哥:我秋招一般是说要出国留学了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务