Unity3D通过FindGameObjectsWithTag获取集合排序

本文探讨了在Unity3D中使用FindGameObjectsWithTag获取GameObject集合时,发现返回的顺序并不固定。经过测试,在Unity 2017.4.2f2版本中,该方法返回的顺序可能是倒序或随机顺序,而非Hierarchy面板中的顺序。为了解决这个问题,文章提供了一个使用LINQ结合GetSiblingIndex()进行排序的方法,确保集合按Hierarchy面板中的顺序排列。代码示例展示了如何在Start()函数中对找到的游戏对象进行排序并打印其名称。
摘要由CSDN通过智能技术生成

平时获取一系列的image都是通过Inspector面板拖拽或通过transform.find()来得到相关对象的<少用GameObject.find(),好像是效率没这么高>。心血来潮,想起之前Unity文档里面还有一种获得GameObject的方法:FindGameObjectWithTag和FindGameObjectsWithTag。由于是需要得到一个相关GameObject的集合,所以使用了FindGameObjectsWithTag。很天真的认为,得到的集合的顺序就是Hierarchy面板中的顺序。结果打脸了!


得到的结果如下:


说明:这里用的Unity 2017.4.2f2 版本测试的,得到的是倒序。之前在项目中得到的是乱七八糟的顺序,也不知道是不是Unity官方已经对这个方法的返回值根据一定的规则进行了排序。

当通过FindGameObjectsWithTag来找相关物体,得到的集合顺序是随机的,并不是按照Hierarchy面板中的顺序。当我们需要对其进行排序时,可以借助GetSiblingIndex()来实现。

using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
public class TestArray : MonoBehaviour {
       

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值