UnityMod开发教程 05 为Mod添加控制界面

一. 介绍

  虽然很多mod并不需要界面,但是随着功能的复杂,我们肯定会希望有一个界面能让我们在游戏中控制一些参数。幸运的是,UMM为我们提供了方便的方式,还记得一进游戏出现的Mod管理界面吗,我们可以在这里加入我们的界面。
  UMM的界面使用的是Unity的GUILayout,如果你希望学习详细的使用方法,可以通过搜索引擎自行学习,我在这里简单举例一下几个常用的组件。

二. 常用UI

1. 文本 GUILayout.Label

  文本可以让我们显示很多需要的信息,用法也很简单,例如GUILayout.Label("哈哈哈")

2. 按钮 GUILayout.Button

  按钮决定是最常用的UI之一了,通常情况下我们只加一个参数也就是按钮上显示的文字,函数会返回一个bool值,如果被点击了就返回true,没有被点击就返回false,使用的时候一般配合if。例如:

if (GUILayout.Button("输出日志"))
{
    mod.Logger.Log("按钮被点击");
}

3. 文本输入框 GUILayout.TextField

  我们经常想自己输入一些参数,这个时候就可以使用TextField,它的参数是一个字符串,返回的也是一个字符串,在使用它之前,我们应该先创建一个变量用于保存它的结果。
定义变量

public static string text = "";

然后在UI循环中使用这个变量来保存输入

text = GUILayout.TextField(text);

4. 滑动条 GUILayout.HorizontalSlider GUILayout.VerticalSlider

  如果我们想通过一个滑条来控制某个数值的大小,那么我们可以使用这两个函数,他们只有外观上的区别,使用方式是一样的,加如我们现在要修改一个数值speed。
定义变量

public static float speed;

在UI循环中修改变量

speed = GUILayout.HorizontalSlider(speed, 0, 10);

  这样,我们就可以通过滑动条控制speed的值在0到10之间

5. 选框 Toggle

  经常用于选项的开关,比如某个功能是否开启之类的,和上面的使用方法相似。
定义变量

public static bool canWork;

在UI循环中修改变量

canWork = GUILayout.Toggle(canWork);

6. 其他

  其他还有一些控件,不过相对来说需求较少,还有关于UI的位置排版等,如果想要深入了解,可以通过搜索引擎进行学习。

三. 在Mod中加入界面

1. 创建函数

public static void OnGUI(UnityModManager.ModEntry modEntry)
{
    if (GUILayout.Button("输出日志"))
    {
        mod.Logger.Log("按钮被点击");
    }
}

2. 在Load函数中赋值

public static UnityModManager.ModEntry mod;
public static bool Load(UnityModManager.ModEntry modEntry)
{
    mod = modEntry;
    mod.OnGUI = OnGUI;
    return true;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。