【问题标题】:Create array/list of many objects(initially unknown amount) by tag通过标签创建许多对象(最初未知数量)的数组/列表
【发布时间】:2015-06-15 01:13:12
【问题描述】:

我目前正在为我的太空游戏开发雷达系统,我正在尝试研究如何通过标签将游戏对象添加到列表或数组中,然后可以在其他方法中使用。我不能手动执行此操作,因为我将通过程序生成具有不同数量的这些对象的每个级别:行星、敌人、小行星等。我已经查找了至少 5 种左右的方法但是我注意到有些方法似乎在 Unity 5 中被弃用并且不再工作(它们在 3 或 4 年前被竖起大拇指),或者它们只是不按照我需要的方式工作,即作为方法而不是类的本地。任何帮助将不胜感激。

【问题讨论】:

  • 到目前为止你做了什么?尝试使用列表
  • 我已经尝试过数组和列表,但是当我尝试手动将每个 GameObject.FindObjectsWithTag 等添加到其中一个时,我被告知它们没有过载,并且当我尝试通过使用迭代时一个计数器,这也无法将任何游戏对象添加到我的列表/数组中。虽然这似乎是两者中更接近实际工作的:除了在我的场景中找不到任何对象之外没有错误。
  • 基本上这个answers.unity3d.com/questions/729141/…和这个answers.unity3d.com/questions/776637/…以及通过谷歌获得的一些其他答案

标签: c# arrays list unity3d gameobject


【解决方案1】:
 public List<GameObject>  myListofGameObject = new List<GameObject>();



 Start(){
    myListofGameObject.AddRange(GameObject.FindGameObjectsWithTag("TagName"));
    myListofGameObject.AddRange(GameObject.FindGameObjectsWithTag("TagName2"));
    myListofGameObject.AddRange(GameObject.FindGameObjectsWithTag("TagName3"));


    foreach(GameObject gc in myListofGameObject){

           Debug.Log(gc.name);
    }
 }

对我来说非常好用,确保为 linq 泛型添加 System 类。

【讨论】:

  • 好吧,我同意这应该可行,代码对我来说非常有意义,但我得到了这个: `System.Collections.Generic.List 的最佳重载方法匹配当我在上面的代码中添加一个游戏对象时,.Add(UnityEngine.GameObject)' 有一些无效参数。我还添加了 system.collections.generic 和 linq,但它仍然不起作用。
  • 我注意到,如果我将 FindObject 更改为单数而不是复数,我可以添加一个带有该标签的游戏​​对象,但不能添加多个具有相同标签的对象。例如,我需要将所有小行星添加到此列表中,然后是所有行星等。
  • 啊哈!这是 .AddRange 我需要一次添加多个游戏对象! .Add 一次只允许一个。感谢蓝染的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-08
  • 1970-01-01
  • 2014-01-26
  • 2012-01-07
  • 2020-07-22
  • 1970-01-01
相关资源
最近更新 更多