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

.NET游戏道具掉落日志存储:未知数量节点的内存存储方案

解决方案:优化类结构适配动态掉落来源存储

核心思路

把原类中固定数量的Dropped_From_NPC_#和Dropped_In_Zone_#字段,替换为集合类型,以此灵活存储任意数量的NPC与区域关联信息,同时保证内存存储和检索的高效性。

优化后的类结构

先创建一个嵌套类封装单组掉落来源的NPC和区域信息,再在主道具类中用List<T>存储多组掉落数据:

// 封装单组掉落来源的NPC与区域信息
public class DropSource
{
    public string NpcName { get; set; }
    public string ZoneName { get; set; }
}

// 优化后的道具信息类
public class ItemDatabaseInformation
{
    public string Name { get; set; }
    public long LinkID { get; set; }
    public long IconID { get; set; }
    
    // 动态存储所有掉落来源,数量可自由增减
    public List<DropSource> DropSources { get; set; } = new List<DropSource>();
}

使用说明

  • 导入数据时:每读取到一组道具的NPC/区域组合,就实例化一个DropSource对象,添加到DropSources列表即可,无论数量多少都能处理。
  • 检索数据时:直接遍历DropSources就能获取道具所有掉落来源,也可通过LINQ快速筛选(比如查找指定区域掉落的道具):
// 示例:查找所有在"幽暗森林"掉落的道具
var itemsFromZone = itemList.Where(item => 
    item.DropSources.Any(source => source.ZoneName == "幽暗森林"));

方案优势

  • 适配动态数量:不管是1个还是数百个掉落来源,都无需修改类结构,直接存储。
  • 内存效率高:List<T>是.NET中轻量高效的内存集合,遍历和检索性能优异。
  • 代码可读性强:嵌套类结构清晰,直接体现"道具-多掉落来源"的关联关系,后续维护成本低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 04:25:56