有一个需求,需要用代码找到一个GameObject并将其取消激活。我是这么写的: GameObject.Find("mainCanvas").SetActive(false); 但你运行后就会发现它报错; 而报错的内容是找不到物体。反复核实路径正确,且物体确实是激活状态后我对这个代码的报错感到很不解。 直到我把代码改成了: varMainCanvas = GameObject.Find("...
Add(name, gameObject); } 你也可以在例如生成一个非活动对象之后调用它。5#a14dhokn 2023-02-23 你可以使用 predicate 。只要得到gameObject并使用 predicate 检查它们,如下所示: public List<GameObject> FindInactiveGameObjects() { GameObject[] all = GameObject.FindObjectsOfType<GameObject> ();//Get all...
Unity3D中使用GameObject.Find()应该注意的问题 在使用这个方法的时候,应该注意Find的这个物体必须是active的,也就是说在场景中是处于激活状态的, 如果不是激活状态就会发生空指针的情况。 但是如果在运行初期,我们就希望能够Find到一个未被激活的gameObject的话,可以采用这种方法,采用 transform.Finf(“”).gameObject...
GameObject.Find("A21"); // false GameObject.Find("A22"); // true // 孙子节点(受父节点影响) GameObject.Find("A31"); // false GameObject.Find("A32"); // false GameObject.Find("A33"); // false GameObject.Find("A34"); // true GameObject.Find("A34"); // true 相对路径查找 GameOb...
你可以在脚本中通过来访问对象,即使它当前处于未激活状态。确保你在对象激活之前正确地记录引用。 总结 GameObject.Find无法查找未激活的对象。 使用GameObject.FindObjectsOfType方法可以遍历场景中的所有对象,包括未激活的。 通过保持对游戏对象的引用,可以在需要时访问这些对象。
之前给大家介绍过GameObject.find和obj.transform.find的区别,对于这两者也有了基本的了解,下面这篇就来看看使用GameObject.Find()、Transform.Find查找游戏对象。 1、前置条件 Unity中常用到查找对象,非隐藏的、隐藏的,各种方法性能有高有低,使用又有各种条件限制。
Transform.Find只查找自己本身以及自己的子对象,效率比较高,用途比较大。 一般来说他俩有个最大的区别就是 Transform.Find可以获取处于激活/非激活状态的游戏对象,返回值类型是Transform 类型。 GameObject.Find只能获取处于激活状态的游戏对象,返回值类型是一个GameObject类型。
GameObject..朋友们,为什么我按着书上打的代码,target通过find找存在的物体名字却显示为NULL?晕死,两个if的问题,把两个if删除了就能运行了。但是这个if判断按理说target不是tank吗?为什么会成为null。
Note: Find does not perform a recursive descend down a Transform hierarchy. Note: Find can find transform of disabled GameObject. 所以这个函数的功能是基于某个对象的Transform组件,在这个组件的下面进行子组件的查找。 Transform是Unity的GameObject-组件系统中一个特殊的组件以致于直接成为了GameObject类型的...
Transform.Find只查找自己本身以及自己的子对象,效率比较高,用途比较大。 一般来说他俩有个最大的区别就是 Transform.Find可以获取处于激活/非激活状态的游戏对象,返回值类型是Transform 类型。 GameObject.Find只能获取处于激活状态的游戏对象,返回值类型是一个GameObject类型。