Unity中使用new语法向List添加GridObject对象时触发"Tuple must contain at least two Elements"错误的原因排查
解决Unity中“Tuple must contain at least two Elements”错误
嘿,我来帮你搞定这个问题!你遇到的错误完全是因为类实例化的语法写错了,咱们一步一步理清楚:
错误原因分析
你代码里的这一行:
Grid.Add( new (GridObject) {xCord = 0, zCord = 0, ObjectID = 0});
C# 编译器会把new (GridObject)解析成尝试创建一个单元素元组,但C#的元组语法明确要求元组必须包含至少两个元素,所以才会抛出“Tuple must contain at least two Elements”的错误。这和GameObject本身无关,纯粹是语法误用导致的误解。
修复方法
正确的类实例化语法不需要把类名放在括号里,把括号去掉就可以正常工作,有两种写法可选:
写法1:带括号的对象初始化器(更严谨)
Grid.Add(new GridObject() { xCord = 0, zCord = 0, ObjectID = 0 });
写法2:省略括号的对象初始化器(C# 3.0+支持)
Grid.Add(new GridObject { xCord = 0, zCord = 0, ObjectID = 0 });
额外提醒
另外注意:你在Update()方法里每帧都会向Grid列表添加一个新的GridObject实例,这样会导致内存持续增长,很快就会积累大量无用对象。如果只是测试,建议改成只执行一次,比如移到Start()里,或者加个触发条件,比如:
void Update() { // 按空格键才添加一次 if (Input.GetKeyDown(KeyCode.Space)) { Grid.Add(new GridObject { xCord = 0, zCord = 0, ObjectID = 0 }); } }
内容的提问来源于stack exchange,提问作者99thGamer
相关产品推荐
相关产品推荐

