Unity3D RPG 入门项目(七)技能系统、Excel 配表解析、StreamingAssets 资源目录
核心知识点技能界面 BasePanel 搭建、Excel 表格第三方库解析、StreamingAssets 与 Resources 区别、技能完整 XML/Excel 配置字段、枚举分类、文件 IO 读取、按职业筛选技能、通用 Item 预制复用、项目通用 UI 开发思路一、技能界面基础搭建1 概念独立技能弹窗面板继承通用 BasePanel 实现滑入动画底部功能栏增加技能按钮点击弹出对应职业技能列表结构逻辑和商店 / 背包完全统一。2 特性 / 规则整体 ScrollRect 竖直滚动列表GridLayout 自动排布技能条目单个技能预制统一包含图标、名称、技能描述、消耗蓝、技能类型文本打开面板时读取玩家职业筛选对应技能批量生成界面逻辑高度复用商店、背包代码结构一套模板适配所有列表 UI。3 语法 代码片段public class SkillPanel : BasePanel{ public RectTransform content; public GameObject skillItemPref; // 打开时根据玩家职业刷新列表 public override void Show(){ base.Show(); RefreshSkillList(PlayerStatus.Instance.JobType); } void RefreshSkillList(JobType job){ // 清空原有技能 foreach(Transform t in content) Destroy(t.gameObject); ListSkillInfo skillList SkillConfig.Instance.GetSkillByJob(job); foreach(var info in skillList){ GameObject item Instantiate(skillItemPref, content); item.GetComponentSkillItem().SetData(info); } } }4 相关知识点对比技能面板 VS 商店 / 背包面板底层结构完全一致ScrollGrid 预制 配置读取 唯一差异筛选条件商店按物品类型技能按职业。5 模块拓展技能 CD 预览、技能升级 UI、技能释放快捷栏。二、两种持久资源目录Resources VS StreamingAssets1 概念Unity 两个特殊资源文件夹资源打包处理、读取方式、文件格式保留规则完全不同Excel、视频、文本原始文件统一放 StreamingAssets。2 特性 / 规则Resources 打包时全部编译加密为二进制原始文件丢失 读取Resources.Load(路径) 适合贴图、预制、音效等引擎资源StreamingAssets 打包保留原始文件格式不加密、不转码 读取需要System.IO文件流拼接平台完整路径Application.streamingAssetsPath Excel、TXT、视频、外部配置原始文件专用限制编辑器运行、打包后路径写法存在平台差异不能用 Resources 加载。3 语法 代码片段// StreamingAssets完整路径拼接 string path Path.Combine(Application.streamingAssetsPath, SkillConfig.xlsx); FileStream fs File.Open(path, FileMode.Open, FileAccess.Read);4 相关知识点对比维度ResourcesStreamingAssets打包处理转为二进制加密保留原始文件读取方式Resources.LoadFile 文件流适用文件贴图 / 预制 / 音频Excel / 视频 / 外部原始配置5 模块拓展热更新外置配置、本地剧情文本、CG 视频统一放 StreamingAssets。三、Excel 技能配表完整字段设计1 概念Excel 作为策划可视化配置工具一张表存储全游戏所有技能数据包含基础信息、战斗属性、释放规则、特效动画共 17 项字段区分表头和数据行。2 特性 / 规则第一行为表头程序解析跳过从第二行开始读取有效数据所有枚举类型职业、技能类型、释放方式使用固定英文标识字段清单ID、技能名、图标资源、描述、作用类型、作用属性、数值、持续时间、耗蓝、CD、适用职业、解锁等级、释放类型、释放距离、特效名、动画名、动画时长禁止 WPS/Excel 同时占用文件否则文件流读取报错。3 配置示例表头 单行数据ID,name,icon,desc,effectType,attrType,value,duration,mpCost,cd,job,lv,castType,range,effectAnim,skillAnim,animTime 1001,火球,fire,单体火焰伤害,Single,Atk,80,3,20,5,Mage,1,SingleTarget,8,fireEff,fireSkill,1.24 相关知识点对比Excel VS JSON/XMLExcel策划可视化编辑批量修改便捷 JSON/XML程序解析简单不适合大量数值批量调整。5 模块拓展新增技能伤害系数、暴击率、套装联动字段。四、Excel 第三方库环境配置1 概念Unity 原生不支持 Excel 解析导入 NPOI/IExcelDataReader 三组 dll 放入 Plugins 文件夹引入对应命名空间实现表格读写。2 特性 / 规则Plugins 是引擎专用第三方库目录脚本自动优先编译必须导入完整配套 dll缺失会报读取类不存在解析核心命名空间ExcelDataReader、System.Data文件操作需要引入System.IO处理文件流。3 语法 代码片段using ExcelDataReader; using System.Data; using System.IO; // 打开Excel文件流 string filePath Application.streamingAssetsPath /SkillConfig.xlsx; FileStream stream File.Open(filePath, FileMode.Open, FileAccess.Read); using var reader ExcelReaderFactory.CreateReader(stream); DataSet dataSet new DataSet(); dataSet.Load(reader); // 获取第一张数据表 DataTable table dataSet.Tables[0];4 相关知识点对比无第三方库手写解析 VS NPOI 库手写只能拆分 CSV 文本无法解析 xlsx 表格 NPOI直接解析标准 Excel支持多工作表、行列索引读取。5 模块拓展Excel 写入功能、运行时动态修改配置存档。五、Excel 完整解析流程1 概念文件流打开 Excel→读取 DataSet 数据表→遍历数据行跳过表头→逐列读取字符串→转换对应数值 / 枚举→存入全局字典缓存。2 特性 / 规则行索引从 1 开始跳过表头第 0 行是标题单元格读取结果全部为 stringint、枚举需要强制转换竖线拼接整行调试打印方便核对配置解析完成关闭文件流释放文件占用。3 语法 代码片段// 遍历数据行跳过表头i0 for(int i 1; i table.Rows.Count; i){ DataRow row table.Rows[i]; SkillInfo info new SkillInfo(); info.id int.Parse(row[0].ToString()); info.skillName row[1].ToString(); info.jobType (JobType)Enum.Parse(typeof(JobType), row[9].ToString()); // 其余字段赋值... skillDict.Add(info.id, info); }4 相关知识点对比逐单元格直接读取 VS 拼接字符串调试直接读取业务逻辑高效出错难定位 拼接打印开发阶段快速核对配置是否读取正确。5 模块拓展配置热重载、运行时重新加载 Excel 更新技能数据。六、SkillInfo 实体与枚举定义1 概念实体类一对一映射 Excel 全部字段枚举统一约束技能分类避免字符串硬编码出错。2 特性规则枚举技能作用类型、属性类型、释放类型、适用职业实体字段与 Excel 列顺序一一对应全局字典Dictionaryint, SkillInfo以技能 ID 为键缓存所有配置。3 语法 代码片段// 技能作用类型 public enum SkillEffectType { Single, AOE, Buff } // 技能实体 public class SkillInfo{ public int id; public string skillName; public string iconPath; public SkillEffectType effectType; public int mpCost; public float cdTime; public JobType fitJob; } // 全局配置单例 public class SkillConfig{ public static SkillConfig Instance; private Dictionaryint, SkillInfo skillDict new(); // 根据ID获取 public SkillInfo GetById(int id){ skillDict.TryGetValue(id, out var res); return res; } // 根据职业筛选全部技能 public ListSkillInfo GetSkillByJob(JobType job){ ListSkillInfo list new(); foreach(var kv in skillDict){ if(kv.Value.fitJob job) list.Add(kv.Value); } return list; } }4 相关知识点对比枚举标识 VS 硬编码字符串枚举编译校验拼写错误直接报错 字符串运行时才发现错误排错成本高。5 模块拓展技能等级多配置表、技能前置解锁条件。七、技能 Item 条目渲染逻辑1 概念单个技能预制挂载 SkillItem 脚本接收 SkillInfo 填充图标、名称、描述、耗蓝、技能类型文本。2 特性 / 规则图标从 Resources 读取贴图枚举转中文文本展示给玩家界面完全复用商店 Item 代码架构。3 语法 代码片段public class SkillItem{ public Image iconImg; public Text nameTxt; public Text descTxt; public Text mpTxt; public void SetData(SkillInfo info){ iconImg.sprite Resources.LoadSprite(SkillIcon/ info.iconPath); nameTxt.text info.skillName; mpTxt.text $消耗蓝量{info.mpCost}; // 枚举转中文描述 string typeStr info.effectType switch{ SkillEffectType.Single 单体伤害, SkillEffectType.AOE 群体范围, SkillEffectType.Buff 增益效果 }; descTxt.text $技能类型{typeStr}\n{info.desc}; } }4 相关知识点对比硬编码中文 VS 枚举匹配转换硬编码多处重复文字修改需全量替换 枚举 switch 统一转换一处维护。5 模块拓展技能 CD 遮罩、可学习高亮区分未解锁技能。八、项目通用 UI 开发标准化思路1 概念背包 / 商店 / 装备 / 技能四类列表界面底层架构完全统一形成固定开发模板大幅减少重复编码。2 固定开发模板流程弹窗继承 BasePanel实现 Show 刷新ScrollGridLayout 布局条目预制新建对应 Config 配置单例解析外部配表封装按类型 / 职业筛选接口条目脚本 SetData 渲染配置功能按钮点击刷新列表。3 相关知识点对比每个界面重新设计 VS 复用统一模板重新开发大量重复布局、加载、销毁代码 统一模板只修改配置实体和筛选逻辑开发效率翻倍。5 模块拓展商城、任务、成就全部复用该模板。综合拓展1 技能系统完整业务流程StreamingAssets 存放 Excel 技能配表→NPOI 解析表格→字典缓存所有技能→打开技能面板读取玩家职业→筛选对应技能批量实例条目→渲染图标 / 名称 / 耗蓝 / 类型2 高频 Bug 排查清单Excel 读取失败WPS 占用文件、dll 缺失、路径写错技能列表为空职业枚举字符串不匹配、表头未跳过贴图空白Resources 图标路径和 Excelicon 字段不一致打包文件找不到误用 Resources 读取 StreamingAssets3 核心考点StreamingAssets 与 Resources 区别、Excel 第三方库解析流程、技能多条件筛选、通用列表 UI 模板、配表实体枚举设计4 进阶拓展学习方向技能释放战斗逻辑、CD 计时器、技能升级配表、外置热更新 Excel、技能快捷键栏5 实战落地要求整合背包 / 商店 / 装备 / 技能四大 UI 模块统一配表解析架构写入 RPG 项目。

相关新闻

电商用户沟通流程怎么优化?个人微信API打通5个触点增加复购率

电商用户沟通流程怎么优化?个人微信API打通5个触点增加复购率

今年开春接了个活儿,客户是做美妆电商的,天猫店加独立站两条腿走路。他们找我的时候甩了一个数据过来:购物车放弃率40%。意思是每10个把商品加进购物车的客户,有4个最后没付款就走了。 这个数字在美妆类目不算夸张,但…

2026/10/11 6:52:13 阅读更多 →
Deltix开放测试版:像真实用户一样测试移动应用,支持多模式、多场景及未来规划!

Deltix开放测试版:像真实用户一样测试移动应用,支持多模式、多场景及未来规划!

像真实用户一样测试你的移动应用用通俗易懂的英语描述一项任务,Deltix会在模拟器上运行该任务,并告诉你真实用户是否能够完成它。目前其处于开放测试版,支持iOS,无需信用卡即可开始免费试用。查看实际运行情况可在YouTube上观看 “…

2026/10/12 2:31:57 阅读更多 →
【从0搭Bot · 第2讲】接上行情源:让 bot 每分钟看到一次价格

【从0搭Bot · 第2讲】接上行情源:让 bot 每分钟看到一次价格

【从0搭Bot 第2讲】接上行情源:让 bot 每分钟看到一次价格 标签:连载 / 从0搭Bot / 第2讲 / 行情源 本期目标 这一讲结束,你能用 ccxt 一行代码拉到 K 线,并看懂返回的每一列是什么。 前置准备 已装 ccxt(pip install…

2026/10/9 7:26:03 阅读更多 →

最新新闻

可靠性数据统计方法与R语言实战:从配套数据集到Weibull建模

可靠性数据统计方法与R语言实战:从配套数据集到Weibull建模

简介:《Statistical Methods for Reliability Data》配套数据集面向可靠性建模学习者和从业者,是这本经典著作的实操补充。包内围绕寿命分布、生存分析、故障率函数、可靠性增长、多组件系统可靠性、寿命试验设计与统计推断等核心知识点,提供…

2026/10/12 20:07:21 阅读更多 →
AI编程agent失控?用最小规格驱动工作流守住代码边界

AI编程agent失控?用最小规格驱动工作流守住代码边界

我本来是想抄作业的。Spec Kit、OpenSpec、Superpowers 这三个名字,我在搜索框里来回扫了不止一遍。原因很简单:最近一段时间的 AI 编程 agent 越来越难控制,改一个登录模块,它能顺手把我另一个文件的变量名也改了;说好…

2026/10/12 20:07:21 阅读更多 →
自建技术博客的完整实践:从静态站点生成到命令行发布

自建技术博客的完整实践:从静态站点生成到命令行发布

1. 起点:为什么要自建博客,而不是继续躺在平台里我相信每个写过一段时间技术博客的人,都会在某一天产生一个念头:我写的内容到底属于谁?这个念头在我身上盘旋了很久。平台给流量、给推荐、给了现成的排版和读者&#x…

2026/10/12 20:07:21 阅读更多 →
开放代码评审实践:从零搭建轻量级评审工具与流程

开放代码评审实践:从零搭建轻量级评审工具与流程

1. 为什么“代码评审”这件事值得单独拿出来做一套工具代码评审(Code Review)是研发流程里最容易被口号化、也最容易被敷衍的一环。几乎每个团队都声称自己在做评审,但真正落到日常,往往是三种状态:要么是“橡皮图章式…

2026/10/12 20:07:21 阅读更多 →
open-code-review:让代码评审有据可查、有果可闭环的工程实践

open-code-review:让代码评审有据可查、有果可闭环的工程实践

1. 项目概述:open-code-review 到底要解决什么代码评审这件事,但凡在团队里待过一两年的人,都经历过那种“评审2小时,改动3行”的尴尬局面。评审邮件发出去没人理,约了个会议大家对着屏幕沉默,等终于有人说…

2026/10/12 20:07:21 阅读更多 →
贷中风险预测竞赛级Python源码解析:从多表合并到LightGBM建模

贷中风险预测竞赛级Python源码解析:从多表合并到LightGBM建模

简介:面向计算机专业毕业设计、期末大作业及金融风控入门实践,这份完整项目包以贷中风险预测为核心任务,基于Python机器学习完整覆盖数据清洗、特征工程、模型训练与效果评估流程,适合需要从零构建实际项目的初中级学习者。资源共…

2026/10/12 20:06:21 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →