UnityMod开发教程 08 为Mod添加配置文件

一. 前言

  在05节中,我们介绍了怎么添加界面,但是并没有说我们的配置要如何保存下来,如果不保存下来的话,下一次再打开游戏,我们所有的配置都会重置,这不是我们想要的,接下来,我们就了解一下如何保存配置。

二. ModSettings

  因为配置文件这个功能非常常用,所以UMM其实已经为我们准备好了现成的方案,不需要我们自己动手实现,这就是ModSettings类
我们新建一个类Setting,然后继承UnityModManager.ModSettings,在这个类中,我们随便写几个变量用来演示

public class Setting : UnityModManager.ModSettings
{
    public bool SwitchA = false;
    public bool SwitchB = true;
    public string TestText = "Hello World";
}

  我们要注意为设置赋上初始值,这样如果没有配置文件,会默认按照初始值生成。
  在Main中,我们先定义一个变量用来保存设置,然后在Load开始的时候加载设置。

public static UnityModManager.ModEntry mod;
public static Setting setting;
public static bool Load(UnityModManager.ModEntry modEntry)
{
    mod = modEntry;
    setting = UnityModManager.ModSettings.Load<Setting>(mod);
    mod.OnGUI = OnGUI;
    return true;
}

  然后,我们在OnGUI中添加几个UI用于修改配置

public static void OnGUI(UnityModManager.ModEntry modEntry)
{
    setting.SwitchA = GUILayout.Toggle(setting.SwitchA, "开关A");
    setting.SwitchB = GUILayout.Toggle(setting.SwitchB, "开关B");
    setting.TestText = GUILayout.TextField(setting.TestText);
}

  最后是最重要的保存部分,如果你观察过Mod管理器界面,应该会在左下发现了两个按钮,一个Close一个Save,我们需要在这里保存我们的设置。添加如下两个方法:

public static void OnSaveGUI(UnityModManager.ModEntry modEntry)
{
    UnityModManager.ModSettings.Save<Setting>(setting, modEntry);
}

public static void OnHideGUI(UnityModManager.ModEntry modEntry)
{
    UnityModManager.ModSettings.Save<Setting>(setting, modEntry);
}

  最后,在Load中加入我们的这两个方法:

public static bool Load(UnityModManager.ModEntry modEntry)
{
    mod = modEntry;
    setting = UnityModManager.ModSettings.Load<Setting>(mod);
    mod.OnGUI = OnGUI;
    mod.OnSaveGUI = OnSaveGUI;
    mod.OnHideGUI = OnHideGUI;
    return true;
}

  大功告成,这样,在玩家点击保存或者是关闭的时候,我们的设置就会被保存到文件,留待下次使用。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容

  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,939评论 0 5
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,508评论 0 5
  • 2018年5月15日 星期二 晴 今天晚上史皓诚高兴的对我说:“妈妈,给你看个好东西。”“什么...
    史皓诚妈妈阅读 148评论 0 0
  • 人生,一边拥有,一边失去, 生活,一边经历,一边成长。 谁的生活一帆风顺, 谁的前路一马平川? 失去总是在所难免,...
    超越梦想888阅读 354评论 0 1
  • 天热时,想成为你头上的云;起风时,想成为你身边的墙;下雨时,想成为你手中的伞;想成为和你有关的一切;护你周全,保...
    落白亦阅读 1,383评论 0 6