管理员

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(); }); 

      } 

}


社区小蜜蜂 最后编辑于 2021年12月08日 下午 17:19