一. 介绍
虽然很多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;
}