【问题标题】:Find also in inactive gameobject [duplicate]也在非活动的游戏对象中找到[重复]
【发布时间】:2016-07-28 20:35:23
【问题描述】:

我正在使用

GameObject.Find("Name");

但它只在活动的游戏对象中搜索,是否有任何选项也可以搜索非活动的对象。

我想搜索名称而不是标签名称的对象。

【问题讨论】:

  • 我想您应该需要再次阅读该问题,按标签名称搜索
  • 我猜你需要阅读我所说的,我说的是“相关”。我假设如果无法通过标签名称找到它,那么祝你好运通过Find
  • 实际问题是什么? .Find 很慢,如果您需要使用它,应该存在一些编码/样式问题(因为这意味着您有时会失去对自己 GO 的控制)
  • @Mark 我想在编辑器模式下搜索一些 GUI 元素以启用/禁用 UI 元素,即我正在查找对象

标签: c# unity3d


【解决方案1】:

无法使用GameObject.Find 按名称搜索非活动游戏对象。 您将需要找到替代解决方案。

这里有一些简单的方法可以让你找到你的游戏对象。

  1. 假设游戏对象有一个父对象并且你有一个引用,你可以使用Transform.Find,因为它会返回

    parentGameObject.transform.Find("Name").gameObject;

  2. GameObject.FindObjectOfType<T>();

    这个方法很慢,永远不应该在Update中调用

    您可以通过游戏对象上的任何组件类型进行查找,因此您可以使用小型脚手架组件来查找对象

  3. 使用SerializedField 创建编辑器引用

例如

[SerializedField]
private GameObject myObject
  1. 如果您确实需要使用 Find,请首先激活您的游戏对象,进行一些初始化并存储对游戏对象的引用,然后使其处于非活动状态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多