将 GameObject 转换为制作的对象列表并迭代

Posted

技术标签:

【中文标题】将 GameObject 转换为制作的对象列表并迭代【英文标题】:Convert GameObject into the List of Objects made and iterate through 【发布时间】: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

【问题讨论】:

这是否回答了您的问题:Is it possible to: increment index by 1 and wrap back to 0 if(index > list.Count) within 1 line of code? ? 感谢这部分!我也忘了说我一直收到这个错误。即使使用您的代码。我什至尝试过,它仍然给出错误“无法将类型'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 按钮就会停止显示该功能 【参考方案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 按钮就会停止显示该功能

以上是关于将 GameObject 转换为制作的对象列表并迭代的主要内容,如果未能解决你的问题,请参考以下文章

如何将 byte[] 转换为 GameObject? (统一安卓)[重复]

Unity3D:将所有游戏对象转换为相同大小,而不管其比例如何

如何从 JSON 解析到 Unity GameObject

Unity/C# 查找对象并获取组件

如何在列表中获取游戏对象的组件

GameObject游戏对象