当前位置: 首页 > news >正文

游戏数据分类总结:静态配置(.asset)vs 动态交互(服务器数据)

基于 RoleTable/RoleData 代码,结合实际开发场景,梳理游戏中不同类型数据的存储/使用规则,明确“哪些数据该做 .asset 配置,哪些该和服务器交互”。

一、核心分类:两类数据的本质区别

维度静态配置数据(如 RoleData 角色基础属性)动态交互数据(如 playerTalentDict 天赋 / 玩家等级)
数据来源策划配置、游戏开发阶段确定服务器下发、玩家行为产生
存储形式序列化到 .asset 文件(磁盘)运行时存内存(RAM),可选存本地存档 / 服务器
是否可改开发期可改,运行时只读(打包后无法修改)运行时可改(服务器同步)
生命周期永久(磁盘)+ 运行时(内存)运行时(内存),关游戏消失(需服务器 / 存档恢复)
Unity 实现方式ScriptableObject + [Serializable] 类普通 C# 集合(Dictionary/List)、自定义类
核心用途游戏基础规则(角色初始属性、技能 ID、数值模板)玩家个性化数据(等级、经验、天赋、装备、时装)
是否需要服务器不需要(本地加载即可)必须(同步玩家数据、防作弊)

二、静态配置数据(.asset):典型场景 + 特点

1. 适用场景(全部写进 .asset)

  • 角色基础属性:如 RoleData 里的 MaxHp、PhysicalAttack、Strength(所有玩家 / 怪物的初始模板);
  • 技能配置:技能 ID、冷却时间、伤害公式、技能预制体路径;
  • 道具配置:道具 ID、名称、图标、效果、售价;
  • 关卡配置:关卡地图、敌人波数、胜利条件;
  • 动画配置:如 RoleSettingSO 里的动画名称(idle/walk/attack);
  • 常量配置:最大等级、经验公式参数、属性枚举映射。

2. 核心特点

  • 开发期定死:策划在 Excel 配置后,导出成 .asset,打包进游戏;
  • 运行时只读:所有玩家看到的都是同一套基础规则,避免篡改;
  • 本地加载:游戏启动时从 .asset 反序列化到内存,无需请求服务器;
  • 性能优先:频繁读取(如角色属性),本地内存加载比网络请求快。

3. 代码示例(RoleTable)

// RoleTable 继承 ScriptableObject → 生成 .asset 文件,存所有角色基础配置publicpartialclassRoleTable:ScriptableObject{[SerializeField]privateRoleData[]_RoleDataItems;// 序列化到 .asset 的角色基础属性数组// 运行时从内存读取配置(反序列化后)publicRoleDataGetRoleData(intid){// 二分查找内存中的 RoleData 数组 → 纯本地操作// 示例逻辑(补充完整):foreach(vardatain_RoleDataItems){if(data.Id==id)returndata;}returnnull;}}三、动态交互数据(服务器数据):典型场景+特点1.适用场景(内存存储+服务器同步) 玩家个性化数据:等级、经验、金币、钻石、天赋(playerTalentDict); 角色动态数据:当前血量、穿戴的装备 ID、激活的时装、buff 状态; 进度数据:已通关关卡、解锁的角色、任务完成状态; 社交数据:好友列表、公会信息、排行榜排名; 战斗数据:当前怒气、技能 CD、临时增益/减益。2.核心特点 运行时动态变化:玩家升级、换装备、加天赋都会修改; 必须服务器同步:防止本地篡改(如改血量、金币),保证多端一致; 内存临时存储:游戏运行时存在 Dictionary/List 中,关游戏消失; 可选本地缓存:可序列化到本地存档(如 PlayerPrefs/.json),下次登录先读缓存,再和服务器同步。3.代码示例(RoleMgr) csharp 运行publicclassRoleMgr:Singleton<RoleMgr>{// 服务器下发的天赋数据 → 纯内存存储publicDictionary<AttributeName,float>playerTalentDict{get;privateset;}// 玩家等级/经验 → 内存存储,需服务器同步publicintPlayerLevel{get;privateset;}publicintPlayerExp{get;privateset;}// 服务器数据回调 → 更新内存数据privatevoidSetPlayerInfoResp(IMessageproto){// 实际项目中需从 proto 协议解析真实数据PlayerLevel=50;PlayerExp=15000;// 初始化/更新天赋字典if(playerTalentDict==null)playerTalentDict=newDictionary<AttributeName,float>();playerTalentDict[AttributeName.Strength]=5f;}}四、两类数据的交互逻辑(游戏运行时) 游戏启动 → 加载静态配置.asset → 反序列化到内存(RoleTable/RoleData); 请求服务器数据 → 服务器返回玩家数据(等级/天赋/装备)→ 存到内存集合(playerTalentDict/RoleList); 结合静态配置+动态数据 → 计算最终属性 → 游戏逻辑使用(显示/战斗); 玩家操作(升级/换装备)→ 更新内存数据 → 同步到服务器。 关键交互示例(计算玩家最终攻击力) csharp 运行// 1. 读静态配置(.asset 加载到内存)RoleDatabaseData=RoleTable.Instance.GetRoleData(1);intbaseAttack=baseData.PhysicalAttack;// 基础攻击100// 2. 读服务器动态数据(内存)floattalentAdd=RoleMgr.Instance.playerTalentDict[AttributeName.Strength]*2;// 天赋加成10// 3. 最终攻击力 = 基础配置 + 动态加成intfinalAttack=baseAttack+(int)talentAdd;// 110五、特殊场景:混合数据(配置+动态) 有些数据是 “配置模板+动态数值” 的结合,需区分处理: 表格 数据类型 配置部分(.asset) 动态部分(服务器) 角色属性 初始值、成长系数 当前值、加成值 技能 技能 ID、基础伤害 当前 CD、是否解锁 装备 装备模板(基础属性) 穿戴状态、强化等级 六、总结:数据设计核心原则 静态规则写.asset:所有 “游戏基础设定、不会随玩家行为变的数值”,都做成 ScriptableObject 配置文件,打包进游戏,本地加载; 动态数据走服务器:所有 “玩家个性化、可修改、需要防作弊” 的数据,运行时存内存,和服务器同步,关游戏消失(可选本地缓存); 核心逻辑=配置+动态:游戏内最终展示/计算的数值,都是 “静态配置模板+服务器动态数据” 的结合; 性能优先:高频读取的基础数据(如角色属性)放本地.asset,低频修改的动态数据(如等级)走服务器。 一句话记住: 策划定死的、所有人都一样的 → 写.asset; 玩家专属的、会变的、要防作弊的 → 走服务器,存内存。
http://www.jsqmd.com/news/440575/

相关文章:

  • 2026年靠谱的对拉螺杆公司推荐:止水螺杆实力厂家如何选 - 行业平台推荐
  • 盘点做量化实盘策略一般都会遇到哪些问题?
  • 128.最长连续数列
  • 2026年靠谱的uv涂装生产线品牌推荐:静电涂装生产线直销厂家选哪家 - 行业平台推荐
  • 企业高质量发展的4D层级体系构建:BD→OD→TD→LD
  • AI原生应用领域安全防护的体系架构与设计原则
  • 【图像加密】基于二维 Logistic 混沌映射+ Liu混沌系统的图像加密 解密及安全性分析信息熵、相邻像素相关性)附matlab代码
  • 2026年北京豆包广告服务商有哪些?联系方式与服务模式全解析 - 品牌2026
  • Milvus Collection 基本操作(Java SDK)
  • 浅析在Cursor中落地AI原生开发工作流OpenSpec规范管理工具:面向AI辅助工作流的规范驱动开发技术实践
  • 2026年GEO服务商怎么选?豆包广告公司联系方式一览 - 品牌2026
  • MilvusVectorStore 使用指南 ——基于spring-ai(可用于搭建Rag)
  • 2026年知名的pa66隔热条工厂推荐:门窗隔热条/尼龙隔热条/铝合金隔热条源头工厂推荐 - 行业平台推荐
  • RASPI裸机8(Filesystem)(TODO)
  • 2026年质量好的吸塑PET片厂家推荐:折盒PET片/食品级PET片/透明窗口膜PET片实力工厂怎么选 - 行业平台推荐
  • 记录win下,WPF设置 System.AppUserModel.PreventPinning 属性用于阻止用户将应用程序固定到任务栏
  • AI时代如何获客?联系哪家公司? - 品牌2026
  • P3750 [六省联考 2017] 分手是祝愿题解
  • 【算法面试必刷】200. 岛屿数量
  • 搞懂这两个组件,Spring 配置问题少一半!
  • 3.5 Spring Boot的配置文件
  • RASPI裸机7(exceptions)(TODO)
  • 【电力系统】储能调峰调频模型优化求解附Matlab代码
  • 00.状态码
  • 2026年热门的侧装缓冲滑轨厂家推荐:钢珠缓冲滑轨/抽屉缓冲滑轨/骑马抽缓冲滑轨值得信赖的生产厂家 - 行业平台推荐
  • 2026年知名的无油空压机品牌推荐:往复式空压机/活塞往复式空压机/直联便携式空压机源头厂家推荐几家 - 行业平台推荐
  • Go 加密性能极限优化实战手册
  • 详细介绍:spring boot项目欢迎页设置方式
  • Skills搭建全流程,看完你的Skills就牛了!存一下吧!
  • 北京的 Clara ,她是如何从一个小白开始做出海独立站的