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

Unity中如何在构造函数中使用List并初始化资源列表

解决方案

首先先修正你Blueprint构造函数里的编译错误:原代码中minNeeded = needunits;这一行类型不匹配(minNeeded是int,needunits是string),必须改成minNeeded = minneed;,否则代码无法通过编译。

针对传入单个资源到List<string>参数的问题,有几种实用方案:

方案1:直接用集合初始化器创建List

这是最直接的写法,C# 3.0及以上版本支持,直接在new List的时候初始化元素:

public Blueprint GlBeBLP = new("Glass Beaker","Units",1,"Kg", new List<string> { "Glass" });

未来需要多资源时,直接在大括号里添加元素即可,比如new List<string> { "Glass", "Clay" }。

方案2:给Blueprint添加重载构造函数

如果觉得每次写new List<string>麻烦,可以给Blueprint类加一个支持单个string参数的重载构造函数,内部自动把单个资源转成List:

// 在Blueprint类中添加以下构造函数
public Blueprint(string name, string craftunits, int minneed, string needunits, string singleResource)
{
    craftedItemName = name;
    craftedUnits = craftunits;
    minNeeded = minneed;
    neededItemsUnits = needunits;
    resourcesList = new List<string> { singleResource };
}

之后调用时就可以直接传单个字符串:

public Blueprint GlBeBLP = new("Glass Beaker","Units",1,"Kg", "Glass");

这种写法更简洁,同时也完全兼容未来多资源的场景(直接用原来的构造函数传List即可)。

方案3:使用LINQ的ToList()快速转换(可选)

如果你习惯LINQ的写法,也可以把单个字符串转成List:

using System.Linq; // 需要引入LINQ命名空间

public Blueprint GlBeBLP = new("Glass Beaker","Units",1,"Kg", new[] { "Glass" }.ToList());

不过这种写法比方案1繁琐,除非有特殊需求,否则推荐方案1或2。

内容的提问来源于stack exchange,提问作者Blessingeoduck

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:20:37