Unity合成系统开发:如何在列表中同时存储物品与对应数量?
解决方案
直接创建一个可序列化的嵌套类,把物品(Item)和对应的需求数量打包成一个独立单元,这样就能在同一个列表里同时存储两者,完全解决你说的问题,还能避免双列表不同步的风险。
具体实现步骤
1. 定义RecipeIngredient类
创建一个带[System.Serializable]标记的类,用来绑定物品和数量:
[System.Serializable] public class RecipeIngredient { public Item item; public int requiredAmount = 1; // 默认数量设为1,可在Inspector修改 }
这个类会被Unity编辑器识别,在Inspector面板里可以直接编辑每个条目的物品和数量。
2. 修改Recipe ScriptableObject
把原来的List<Item>替换成List<RecipeIngredient>:
public class Recipe : ScriptableObject { new public string name = "New Recipe"; public List<RecipeIngredient> requiredItems; public Item outputItem; }
效果说明
修改完成后,在Unity Inspector里编辑Recipe资源时,每个requiredItems条目都会展开显示对应的Item选择框和数量输入框,直观又不会出错,完全符合你想要的“同一列表存储物品与对应数量”的需求。
内容的提问来源于stack exchange,提问作者Siyun Cho
相关产品推荐
相关产品推荐

