BepInex Plugin开发教程 04 简单示例:通过按键修改装机模拟器中的金钱

制作数值类的修改器,可以说是最简单的插件了,本篇文章我们的目标,就是以修改装机模拟器中的金钱为例,制作一个当按下F10键时增加10000金钱的插件。

首先我们快速建立一个基础的插件,Framework版本选择4.6,引用装机模拟器的Assembly-CSharp-firstpass.dll(装机模拟器比较特殊,逻辑不在Assembly-CSharp)和其他基础dll。记得引入UnityEngine.InputModulde,这是检测按键需要用到的库。然后写好插件的主体。

接下来我们将Assembly-CSharp-firstpass.dll拖入Dnspy,使用Dnspy来查看游戏的逻辑,一般来说,我们修改金钱可以从几个方面快速下手。

  • 搜索Money、Coin、Gold、Cost、Price、Cash等金钱相关的关键词
  • 搜索Player等玩家相关的关键词
  • 搜索SaveData、SavaGame等存档相关的关键词
  • 搜索Shop、Store、Buy、Sell等商店相关的关键词

通过排查,我们从CareerStatus类中找到如下了AddCash的方法,也就是增加现金的方法

接下来,我们只要在写一个逻辑,在按下F10的时候,调用这个函数即可

因为我们的插件是继承自MonoBehaviour的,所以我们可以直接在Update中进行输入判断。

最后的完整代码如下

 


using BepInEx;
using UnityEngine;

namespace TutorialMoneyCheat
{
    [BepInPlugin("me.xiaoye97.plugin.MoneyCheat", "MoneyCheat", "1.0")]
    public class MoneyCheat : BaseUnityPlugin
    {
        void Update()
        { 
            if(Input.GetKeyDown(KeyCode.F10))
            {
                CareerStatus.Get().AddCash(10000);
            }
        }
    }
}

这里的Input.GetKeyDown就是判断按键按下的方法,CareerStatus.Get()则是获取CareerStatus的单例,单例模式一般用于游戏中唯一的事物。
编译插件,放到BepInex/plugins目录下,打开游戏,进入职业模式,按下F10,可以发现金钱增加了10000。

发表评论

电子邮件地址不会被公开。必填项已用 * 标注