zoukankan      html  css  js  c++  java
  • Gameobject.Find和Transform.Find应用区别

    using UnityEngine;
    using System.Collections;

    public class test : MonoBehaviour
    {
      private GameObject root;
      private GameObject aa;

      private GameObject tt;
      private GameObject w;

      void Start()
      {
        //父物体root物体没有被隐藏
        root = GameObject.Find("Canvas");
        Debug.LogError(root.name);
        //root下的子物体aa是隐藏的
        aa = root.transform.Find("AA").gameObject;
        Debug.LogError(aa.name);
        //父物体tt物体没有被隐藏
        tt = GameObject.Find("TT");
        //tt下的子物体w是隐藏的
        w = tt.transform.FindChild("W").gameObject;
        Debug.LogError(w.name);
      }
    }

    总结:

    GameObject.Find

    使用规范: 
    1.无法查找隐藏对象 ,
    隐藏对象包括查找路径的任何一个父节点隐藏(active=false)。

    2.如果查找不在最上层,建议合理使用路径查找,路径越精确查找越快。

    3.如果路径查找中的任何一个父节点active=false,这个对象都将查找不到。

    Transform.Find

    1.可以查找隐藏对象 。
    2.支持路径查找 。
    3.查找隐藏对象的前提是transform所在的根节点必须可见,即active=true。

    其他查找

    GameObject.FindWithTag   查找标签

    返回一个用tag做标识的活动的游戏物体,如果没有找到则为空。标签必须在使用之前到标签管理器里面声明。

    GameObject.FindGameObjectsWithTag  查找标签的游戏物体列表

    返回一个用tag做标识的活动的游戏物体的列表.如果没有找到则为空。标签必须在使用之前到标签管理器里面声明。

    Resources.FindObjectsOfTypeAll    查找所有类型的物体 

    返回一个物体类的类型或从type派生的数组。返回Type类型的所有物体的一个列表。这个函数可以返回加载的Unity物体的任意类型,包含游戏物体、预设、材质、网格、纹理等等。它也会列出内部的东西,因此,请格外小心处理返回的物体的方式。相反Object.FindObjectsOfType这个函数也会列出禁用的对象。请注意这个函数非常慢,不推荐在每帧中使用。

    Object.FindObjectOfType   查找首个Type物体 

    返回Type类型第一个激活的加载的物体。请注意这个函数是非常慢的。不推荐在每帧使用这个函数,大多数情况下你可以使用单例模式代替。

    Object.FindObjectsOfType    查找Type物体

    返回Type类型的所有激活的加载的物体列表。它将返回任何资源(网格,纹理,预设,...)或未激活的物体。请注意这个函数是非常慢的。不推荐在每帧使用这个函数,大多数情况下你可以使用单例模式代替。

  • 相关阅读:
    ZOJ
    FZU
    FZU 2231 平行四边形数
    [转载] java的动态代理机制详解
    [转载] 解读ClassLoader
    [转载] 深入了解Java ClassLoader、Bytecode 、ASM、cglib
    MyBatis入门
    Spring入门
    Nginx入门
    Redis入门
  • 原文地址:https://www.cnblogs.com/Study088/p/7283548.html
Copyright © 2011-2022 走看看