将 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<GameObject> _recordinglist = new List<GameObject>();
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<GameObject> _recordinglist = new List<GameObject>();
code public void SetRecPrefabType(GameObject[] _recordinglist) _drawObjectPrefab = _recordinglist[0];
是迄今为止我得到的最接近的,没有错误,但是一旦使用 GameObject[] 而不是 Gameobject,Onclick 按钮就会停止显示该功能以上是关于将 GameObject 转换为制作的对象列表并迭代的主要内容,如果未能解决你的问题,请参考以下文章
如何将 byte[] 转换为 GameObject? (统一安卓)[重复]