金庸3DUnity重置入门系列文章
金庸3dUnity重置入门 - lua 语法
金庸3dUnity重置入门 - UniTask插件
金庸3dUnity重置入门 - Mods开发
金庸3dUnity重置入门 - Cinemachine 动画
金庸3dUnity重置入门 - 大世界实现方案
金庸3dUnity重置入门 - 素材极限压缩
=================(部分可能放到付费博客)===========================
花了一个周末开发了一个Mods,的十分之一
- 这里不会过多的提到Unity基础操作
- 也不会提到程序基本语法如何从0到1
- 更不会说到游戏开发基础和过程
- 应该也不会提到手游,页游和独立游戏开发的区别
好像没有以上基础也不是不能继续往下看,没吃过猪肉,难道就不能像猪一样飞了?
一小哥 ---------- 关于金庸群侠3d的启动文章也很详细了,链接放最后了
哥也在上一个章节说了 ---------- lua的开发
这一个章节 ------------ 重点 Mods扩展开发 以及如何读表数据(配表)
哥上周末 --------- 使用Mods和lua开发,还是挺愉快的,看了一下日志
原来才在4天前做了mods和lua的调整重构,哪怕哥再早一个周末进行开发,也难得这么愉快
前人种树,后人乘凉,感谢
只是发现一个问题:调整后的代码,读取的数据貌似不是Datas这个文件、
实测后发现,假如用:GameConfigDatabase.Instance.Init(data)的方法
- 读取到的数据,是SAMPLE(Mods)的默认数据,里面有21个"场景“之多
- 但是Runtime,启动游戏进入Mods后,确实读了Excels,我的Mods现在只有5个”场景“
另外的问题:素材加载慢,第一次如此,假如开发Mods不需要替换很多资源倒不是大问题
问题x3:官网文档说的.asset 这个mods说明,和作者信息的文件不存在,应该是重构换掉了
而且:Steam创意工坊的Url貌似不再有效了
https://steamcommunity.com/app/2098790/workshop/
JxNew金庸群侠传3D部分代码说明
获取当前加载哪个Mods
var mod = RuntimeEnvSetup.GetCurrentMod();
加载所有Config(Excel)数据
var excelDir = Path.Combine(editor.RootConfig.ModRootDir, "Configs");
var data = ExcelTools.LoadFromExcels(excelDir);
GameConfigDatabase.Instance.Init(data);
加载Mods(内核,开发Mods一般不需要管)
//RuntimeEvnSetup.cs
await ResLoader.LaunchMod(_currentMod);
ExcelTool读取地图数据?
Scripts/Jyx2ResourceHelper.cs
private static async Task InitConfigTables()
{
var mod = RuntimeEnvSetup.GetCurrentMod();
//编辑器模式下直接从excel中载入,不需要再打包
if (mod is GameModEditor editor)
{
var excelDir = Path.Combine(editor.RootConfig.ModRootDir, "Configs");
var data = ExcelTools.LoadFromExcels(excelDir);
GameConfigDatabase.Instance.Init(data);
}
else //否则从打包载入
{
var config = await ResLoader.LoadAsset<TextAsset>($"Assets/Configs/Datas.bytes");
GameConfigDatabase.Instance.Init(config.bytes);
}
}
下探这段代码就会发现,现在使用ExcelTools.cs直接加载Excel,懂的都懂,不需要再下探底层代码,挺简单的Excel加载逻辑,能实现,也好用,开发调试过程更简单;
(凡事都是双面刃)
但重构后的主要问题,还是把原来跨平台的.bytes加载变成了不能跨平台的.xlsx读取
跨平台的ExcelTools确实不好实现,即使哥工作多年,也没完全实现过Excel手机加载,基本也都是.bytes加载了事
ExcelTolls底层使用的是C#原生的 IExcel(winForm) 和DataCollection
不过,作为单机和win平台问题不大,或者之后随着xbox的跨平台,也能跟着跨平台呢。
(其实数据加载会卡顿的,整个数据层==无无数据层,只能说做单机太幸福了)
处理MeshTerrainEditor插件
个人做这个项目研究时,会把这个目录移除项目做备份,因为每次改完代码后的编译,很卡
(在办公室还好,但在家里的小破笔记本真撑不住,应该只是在第一次启动时才需要编译插件,但是这个插件没做好,结果每次C#编译也会同步编译插件,导致的卡顿,这个插件只是做美术地图用,程序员也不太需要)
- 或者反勾【启动时显示】能解决,
- 或者改插件内部代码能解决,
- 但哥还是先做备份,
- 暂时不需要改大地图
开发Mods步骤:
哎,说了这么多,好像什么正事都没干
参考,扩展阅读:
unity-《金庸群侠传3D重制版》起始界面解析_xkxsxkx的博客-CSDN博客
【Unity】四叉树/八叉树管理和动态加载场景物件_MrASL的博客-CSDN博客_10.在不可见区域,使用编写编辑器脚本,在打包前,使用四叉树对场景进行预先分块