Unity如何将自定义类初始化的嵌套列表传入IEnumerator方法
解决Unity中自定义序列化类作为协程参数的问题
问题背景
你已经实现了可序列化的嵌套列表结构,代码如下:
[System.Serializable] public class TabSlots { public List<GameObject> tabslots; } [System.Serializable] public class Tablature { public List<TabSlots> tablature; } public Tablature allSlots = new Tablature();
该结构可在Inspector中正常赋值,且能通过allSlots.tablature[0].tabslots[0]访问对应GameObject组件。现在需要将allSlots作为参数传入IEnumerator协程方法,补充以下代码中的???:
- 调用端:
StartCoroutine(MyTest(deck, ??? )); - 方法定义端:
IEnumerator MyTest(List<GameObject> list1, ??? )
解决方案
调用端代码
将???替换为allSlots,即:
StartCoroutine(MyTest(deck, allSlots));
方法定义端代码
将???替换为Tablature tabData,即:
IEnumerator MyTest(List<GameObject> list1, Tablature tabData) { // 示例:访问嵌套列表中的GameObject if(tabData.tablature.Count > 0 && tabData.tablature[0].tabslots.Count > 0) { GameObject targetObj = tabData.tablature[0].tabslots[0]; // 执行你的逻辑 } yield return null; }
说明
协程方法支持传入自定义的引用类型参数,Tablature是你定义的可序列化类,直接将其作为参数类型即可。调用时传入实例allSlots,就能在协程内部正常访问其嵌套结构中的内容。
内容的提问来源于stack exchange,提问作者Calvin
相关产品推荐
相关产品推荐

