API1.4的mod多了个清单,即modinfo.json,用来描述mod和区分mod。
正式的mod都需要modinfo.json文件,否则API1.4不会读取。
modinfo.json的书写示例: 括号内容要去掉
{
"Name": "超级背包", (mod的名称)
"Version": "1.0", (mod的当前版本)
"ApiVersion": "1.4", (使用的API版本)
"Description": "将一种物品的最高堆叠数由40增加到1024个。", (mod的介绍与说明)
"ScVersion": "2.2.10.4", (对应的游戏版本)
"Link": "https://m.schub.top/com/mods/preview/33", (mod在社区的发布页链接)
"Author": "小蜜蜂", (mod的作者)
"PackageName": "bee.SuperPack", (mod的标识,即唯一的标识名)
"Dependencies": [] (mod的依赖项)
}
此外,scmod里可以放mod的图标,图片名需改为icon.png。
mod图标非必需,但建议加入,让你的mod更具特色。
示例:左边为API1.33的scmod,右边为对接后的API1.4的scmod。
xdb、cr、csv、clo等mod文件不变。
pak文件需做以下处理(API1.4废除了pak):
1.解包该pak文件,得到mod的资源文件夹。
2.将资源文件夹重命名为Assets,只有这个文件夹名会被API(1.4)认定为资源库并读取。
3.将一整个文件夹Assets移动到scmod里,取代pak文件的位置。
示例:左边为API1.33的scmod,右边为对接后的API1.4的scmod。
对于dll文件:在项目里改引用文件为最新API1.4电脑版的对应引用,再根据报错修改即可。
ModLoader类只是提供更多效果的实现方式,不是一定要继承的。
如果有需要,即要用到ModLoader提供的方法,可以写一个类继承ModLoader。
示例:替换屏幕。
public class Demo : ModLoader
{
//当ModLoader类被实例化时执行
public override void __ModInitialize()
{
//方法注册,重写ModLoader的方法要注册才会执行,不过OnLoadingFinished是特殊方法,不注册也会执行。但养成良好习惯,建议都写一下。
ModsManager.RegisterHook("OnLoadingFinished", this);
}
//进游戏加载完成时执行
public override void OnLoadingFinished(List loadingActions)
{
//替换某屏幕
loadingActions.Add(delegate { ScreensManager.m_screens["屏幕标识名"] = new NewScreen(); });
}
}