【问题标题】:Convert GameObject into the List of Objects made and iterate through将 GameObject 转换为制作的对象列表并迭代
【发布时间】:2021-04-04 17:12:13
【问题描述】:

我相信这里有很棒的人可以解决这个问题

我有一个在我的第一个脚本中制作的游戏对象列表;

public List<GameObject> _recordinglist = new List<GameObject>();

然后一个按钮创建一个克隆并添加到_recordinglist

      recordedObject = Instantiate(mynewPrefab, new Vector3(0, 0, 0), Quaternion.identity);
// adding to created list 
_recordinglist.Add(recordedObject);

现在在第二个脚本中

我有一个工作脚本

将游戏对象更改为其他游戏对象。例如。通过单击不同的按钮将 Kick 变成 Clap,我将在 Inspector 中更改游戏对象

然而

努力去做

游戏对象 = 列表[0];

即使初始化也会报错

我也不确定如何使用按钮单击/循环列表?

非常感谢为相对初学者的编码人员提供一些明确的指导。

我已经在 Unity 论坛上问过了,但它导致了混乱。我也直接发邮件了,答案不够详细。我也检查过,并没有看到我需要什么。

换句话说,

我正在努力

Recording1 = Recording2 或 3、4、5、6,然后在我选择时从 1 开始。

而不仅仅是录制 = 录制 2

【问题讨论】:

  • 感谢这部分!我也忘了说我一直收到这个错误。即使使用您的代码。我什至尝试过,它仍然给出错误“无法将类型'NatSuite.Examples.HotMic'隐式转换为'UnityEngine.GameObject'”。我是否需要在第二个脚本中复制脚本才能工作? ——
  • 完全不清楚你在那里做什么...... NatSuite.Examples.HotMic 是什么? .. 你可能忘记在某处获取.gameObject 了吗?
  • @derHugo 抱歉,NatSuite 脚本来自统一插件脚本。我基本上是用它来录制的,而这个列表是我添加的,用于使用新音频创建 GameObjects。第二个脚本适用于code _drawObjectPrefab = GameObject.FindGameObjectsWithTag("RecordedCube")[0];,但调用列表。给出了那个错误。该列表已经是第一个脚本(HotMic 脚本)中的游戏对象code public List&lt;GameObject&gt; _recordinglist = new List&lt;GameObject&gt;();
  • code public void SetRecPrefabType(GameObject[] _recordinglist) { _drawObjectPrefab = _recordinglist[0]; } 是迄今为止我得到的最接近的,没有错误,但是一旦使用 GameObject[] 而不是 Gameobject,Onclick 按钮就会停止显示该功能

标签: c# list unity3d gameobject


【解决方案1】:

不确定我是否理解,但我认为这就是您想要的:

GameObject r = _recordings[0]

(在你忘记给变量命名的问题中)

遍历列表:

int i = 0;
GameObject go = _recordings[i];
i = (i + 1) % _recordings.Length;

模数 (%) 符号返回除法余数,因此它确保 i 在到达 _recordings.Length 时会被设置回 0

【讨论】:

  • 如果是List,它宁愿是_recordings.Count ;)
  • 感谢这部分!我也忘了说我一直收到这个错误。即使使用您的代码。我什至尝试过,它仍然给出错误“无法将类型'NatSuite.Examples.HotMic'隐式转换为'UnityEngine.GameObject'”。我是否需要复制第二个脚本中的脚本才能工作?
  • @SagiZiv 感谢您的回答,我不断收到“无法将类型隐式转换为'UnityEngine.GameObject'”的错误。 NatSuite 脚本来自一个统一插件脚本。我基本上是用它来录制的,而这个列表是我添加的,用于使用新音频创建 GameObjects。第二个脚本适用于code _drawObjectPrefab = GameObject.FindGameObjectsWithTag("RecordedCube")[0];,但调用列表。给出了那个错误。该列表已经是第一个脚本(HotMic 脚本)中的游戏对象code public List&lt;GameObject&gt; _recordinglist = new List&lt;GameObject&gt;();
  • code public void SetRecPrefabType(GameObject[] _recordinglist) { _drawObjectPrefab = _recordinglist[0]; } 是迄今为止我得到的最接近的,没有错误,但是一旦使用 GameObject[] 而不是 Gameobject,Onclick 按钮就会停止显示该功能
猜你喜欢
  • 2016-08-12
  • 1970-01-01
  • 2021-09-04
  • 1970-01-01
  • 2017-12-30
  • 1970-01-01
  • 2020-04-11
  • 2012-04-24
  • 2018-10-29
相关资源
最近更新 更多