Unity小技巧 - 自动获取所有子节点,再也不用通过脚本手动链接每个transform了

有时,游戏场景会使用许多相同类型的游戏对象,例如敌人、路标和障碍物。这些游戏对象可能需要由监督或响应它们的特定脚本来跟踪(例如,寻路脚本可能需要使用所有路标)。可以使用变量来链接这些游戏对象,但是如果必须将每个新路标拖动到脚本中的变量,会使设计过程变得繁琐。同样,如果删除一个路标,则必须删除对丢失游戏对象的变量引用,这很麻烦。此类情况下,可使一组游戏对象成为一个父游戏对象的所有子对象,这种管理多个游戏对象的方式通常会更好。可以使用父游戏对象的变换组件来检索子游戏对象(因为所有游戏对象都具有隐式变换),通过下面的方式隐式拿到子节点,实现自动获取所有子节点。

using System.Collections.Generic;
using UnityEngine;

public class WaypointManager : MonoBehaviour
{
    public Transform[] waypoints;

    public Transform Group;

    private List<Transform> _theGroup = new List<Transform>();

    void Start()
    {
        // 将本脚本当前所在的transform中的子结点都实例化到waypoints数组中
        waypoints = new Transform[transform.childCount];
        int i = 0;

        foreach (Transform t in transform)
        {
            waypoints[i++] = t;
        }

        // 实例化Group下的所有子节点,并保存在一个list集合中
        foreach (Transform t in Group)
        {
            _theGroup.Add(t);
            Debug.Log(t.transform.name);
        }
    }
}

这样做的好处就是,再也不用将一个个节点挂载在脚本组件下面了,脚本本身能自动获取。

这个自动获取节点的小技巧就介绍到这里。如果对你有帮助欢迎点赞和分享,欢迎查看本系列中的其他文章~

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值