unity 3d 通过游戏对象的名子查到其对象

  • transform.Find() 仅查找当前对象的子层级,效率远高于全局查找;
  • 支持嵌套路径(如"A/B/C"),可以直接定位深层子对象;
  • 核心优势 :能找到非激活(SetActive (false))的子对象(这是和GameObject.Find()的最大区别)。
cs 复制代码
using UnityEngine;

public class FindChildObject : MonoBehaviour
{
    private GameObject childObject;

    void Start()
    {
        // 方式1:查找直接子对象(当前对象的一级子物体)
        Transform childTrans = transform.Find("DirectChildName");

        // 方式2:查找嵌套子对象(通过路径,支持多层嵌套)
        // Transform nestedTrans = transform.Find("ParentChild/SubChild/GrandChild");

        if (childTrans != null)
        {
            childObject = childTrans.gameObject;
            Debug.Log("成功找到子对象:" + childObject.name);
        }
        else
        {
            Debug.LogError("未找到指定的子对象!");
        }
    }
}
全局查找(GameObject.Find ())

适用于查找场景中任意位置的激活状态游戏对象,是最基础的全局查找方式。

cs 复制代码
using UnityEngine;

public class FindGlobalObject : MonoBehaviour
{
    // 缓存找到的对象,避免重复查找
    private GameObject targetObject;

    void Start()
    {
        // 核心代码:通过名称全局查找游戏对象
        targetObject = GameObject.Find("TargetObjectName"); // 替换为你要找的对象名

        // 判空处理(避免空引用报错)
        if (targetObject != null)
        {
            Debug.Log("成功找到对象:" + targetObject.name);
            // 示例操作:修改找到对象的位置
            targetObject.transform.position = new Vector3(0, 2, 0);
        }
        else
        {
            Debug.LogError("未找到名为【TargetObjectName】的游戏对象!");
        }
    }

    // 后续使用缓存的对象(比如在Update中)
    void Update()
    {
        if (targetObject != null)
        {
            // 执行你需要的逻辑
        }
    }
}
  • GameObject.Find() 会遍历场景中所有激活状态(SetActive (true)) 的游戏对象,性能开销较大;
  • 名称大小写敏感(比如 "Player" 和 "player" 是两个不同名称);
  • 绝对不要在Update/FixedUpdate等高频调用的函数中直接使用,务必在Start/Awake中查找并缓存。
相关推荐
警醒与鞭策4 小时前
【无标题】
android·unity·性能优化·游戏引擎·perforce
全速向光5 小时前
盖世游戏PC模拟器:手机也能畅玩电脑平台游戏
游戏·智能手机
Minecraft红客5 小时前
以撒的结合
python·游戏·电脑·娱乐
zhchyun20086 小时前
【Unity UI 进阶】仿 Element UI 打造企业级 Unity UI 组件库(10)
ui·unity·游戏引擎
地狱为王10 小时前
Unity使用NVIDIA的Audio2Face驱动口型
unity·游戏引擎
ebiobiz12 小时前
STM32F4 Unity 单元测试与多次测试失败率统计详细步骤
stm32·unity·单元测试
the3clipse15 小时前
视频编码技术如何赋能游戏性能优化:从硬件隔离到AI驱动的带宽革命
游戏·性能优化·音视频·视频编码·硬件加速·ai编码·自适应编码
一线灵17 小时前
跨平台游戏引擎 Axmol-2.11.5 发布
游戏引擎·lua
淡海水18 小时前
16-01-C#数据结构源码-附录A-术语表
unity·c#·游戏引擎·il2cpp
淡海水19 小时前
16-03-C#数据结构源码-附录C-参考资源
unity·c#·游戏引擎·il2cpp