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

    [uScript]快速入门

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

      ___导言___

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

      请登录之后再进行评论

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