You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 02:35:16