• 中文
  • 注册
  • 技术交流 技术交流 关注:8 内容:20

    [uScript]快速入门

  • 查看作者
  • 打赏作者
  • 当前位置: 未转变者中文社区 > 技术交流 > 正文
    大版主
    Lv.14

    ___导言___

    模块允许您向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);
        }
    }

    请登录之后再进行评论

    登录
  • 发布内容
  • 任务中心
  • 实时动态
  • 偏好设置
  • 帖子间隔 侧栏位置: