# API 简介&约定

miniExtend 是一个为迷你世界脚本设计的 lua 库。 使用 miniExtend 可以极大简化迷你世界脚本开发。 使用 miniExtend 并不困难。

👈点击查看 miniExtend 的优势

miniExtend 允许你像正常一样调用 lua 基本函数,例如 os.execute 函数,该函数正常情况是不能直接调用的。

miniExtend 允许你将脚本代码集中在全局作用域下管理,只需在 UI 作用域下添加简短的脚本并稍作修改即可,而不是在各个_作用域_之间来回切换,通常无法直接在全局作用域下绑定绑定UI 事件。

miniExtend 允许你执行基于对象的迷你世界 API ,这甚至允许你将原来所需的 3 个参数降至 0 个!一个例子是 CustomUI.UIView.Element:show() ,首先根据对象自身属性确定 2 个参数,然后根据 _G2["__OBJID"] 再确定 1 个参数!

阅读源代码,你会发现更多有趣的内容!

# 代码规范

  • 使用 : 而不是 . 调用 miniExtend 作用域和对象的函数。
  • 如果没有说明对象属性的意义,不要修改这个属性,否则可能导致错误。
  • miniExtend 不经常检查参数是否正确,请保证实参的正确性!

# 定义

# 脚本作用域

脚本文件所处的位置叫做脚本文件的作用域。

所处的位置和脚本文件在文件结构上的位置有关,例如有的脚本文件在地图文件夹中,而有的在 UI 界面文件夹中。

所处的位置决定了脚本在什么时候执行,以及脚本执行时的环境,这就是定义它的意义。

WARNING

不同的脚本作用域的 _G 是不同的,所以不同作用域下的脚本是隔离的,但有其它方式来让它们交流。

更多内容详见 core.lua

在 miniExtend ,一般将作用域分为两类:

  • 全局作用域:该脚本文件位于地图文件夹中,辨别方式是其在脚本编辑器创建,其性质是该作用域下的文件总是在可见脚本中最先执行。

  • UI 作用域:该脚本文件位于自定义 UI 界面文件夹中,辨别方式是其在 UI 编辑器中创建,其性质是该作用域下的文件晚于全局作用域下的脚本文件执行,脚本可以使用 ScriptSupportEvent 监听所属 UI 界面的事件,全局作用域和其它 UI 作用域无法使用 ScriptSupportEvent

这可能很难理解

没关系!你只需知道如何区分全局作用域和 UI 作用域即可!

除非你是 miniExtend 代码仓库贡献者,那样的话建议你理解它!

# 游戏帧

游戏帧是游戏的基本事件单位,游戏帧从 0 开始(以下简称“帧”)。

游戏数据每帧改变一次。

从第 0 帧开始,平均每 0.05秒 会进入新的游戏帧。每个游戏帧的时长是无规律,不确定的,这可能与游戏的计算量有关。

可以近似的把 1 帧当做 0.05s ,但要知道它并不是真正的 0.05s 。记住,不要利用游戏帧来做精密的计时器,类似的功能可以用 os.clock 替代。

对于延续性事件(例如玩家挖掘方块),每一帧会触发一次事件,这也体现了游戏帧的意义。

# 代码示例

本文档包含了一些代码示例,让它们正确运行的前提是你已经搭建好 miniExtend 环境,有的代码可能会有其它要求。

TIP

对于 UI 实例,在代码开头会列出一些局部变量,表示 UI 界面或元件的 id ,不要忘记替换它们

# 关键字

以下是 miniExtend 关键字,避免意外地使用它们作为自己的标识符,改变脚本添加的函数的意义不会影响 miniExtend 的使用,但有的 API 可能会使用这些函数从而导致脚本无法正常运行。

  • 脚本添加的函数:
    • copy_tableisTypeError
    • print_console
    • printtag
    • warn
  • miniExtend 全局函数
    • getObjectId
    • setObjectId
  • miniExtend 全局表/作用域/类
    • _G2
    • Console
    • CustomUI
    • Event