___导言___
模块允许您向uScript添加自定义脚本功能。模块允许您定义各种内容,包括脚本事件,类、模块(静态类)、全局、函数、属性和构造函数。您可以创建uScript模块来提供uScript和其他 插件/服务 之间的接口,或者扩展当前功能。
___快速入门___
入门前请先下载API、主模块和参考库。然后,将它们添加为对模块项目(库)的引用。如果你需要其他引用(如Unturned的Assembly-CSharp.dll),也请确保也包含这些引用。以下演示中,我们将使用Unturned的Assembly-CSharp.dll,UnityEngine.dll和UnityEngine.CoreModule.dll。
___创建第一个模块___
您可以添加的最简单的功能是通过ScriptModule,它不应该与“uScript Module”混淆。这是两件不同的东西。ScriptModule允许您在uScript中复制静态类。换句话说,它将使用ScriptModule的名称创建一个全局类型,该名称允许您直接调用其函数/属性,而无需构造函数。
对于本例,我们将创建一个名为“demo”的ScriptModule,其属性名为“timeZone”,将当前时区作为字符串获取,并创建一个名为“display”的函数,将其显示(广播)到服务器。
代码如下:
//在这里,我们标记我们的模块,并将其命名为“demo”。如果不使用名称,它将使用默认C#类名。 //由于ScriptModules要求所有注册的函数/属性都是静态的,因此我们还将类标记为static的。 [ScriptModule("demo")] public static class DemoModule { //由于我们尚未命名ScriptProperty,它将默认为camelCase属性名称“timeZone”,不过这正是我们想要的。 [ScriptProperty] public static string TimeZone => System.TimeZone.CurrentTimeZone.StandardName; //这是get-only(基于表达式的属性) //就像ScriptProperty中提到的那样,我们也不需要为ScriptFunction命名。我这样做只是为了举例。 [ScriptFunction("display")] public static void Display(string message) { ChatManager.serverSendMessage(message, Color.white); } }