meta data for this page
📚 差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
| scripting:native:core [2025/08/07 04:29] – bibiboxs | scripting:native:core [2025/08/29 20:30] (当前版本) – bibiboxs | ||
|---|---|---|---|
| 行 41: | 行 41: | ||
| ``` | ``` | ||
| - | - `x`:X轴数值(左右) | + | - `x`X轴数值(左右) |
| - | - `y`:Y轴数值(上下) | + | - `y`Y轴数值(上下) |
| - | - `z`:Z轴数值(前后) | + | - `z`Z轴数值(前后) |
| 行 57: | 行 57: | ||
| ``` | ``` | ||
| - | - `x`:X轴数值 | + | - `x`X轴数值 |
| - | - `y`:Y轴数值 | + | - `y`Y轴数值 |
| + | |||
| + | |||
| + | |||
| + | ### Bounds() | ||
| + | |||
| + | > 包围盒结构类型,通常用于AABB数据存储。 | ||
| + | > | ||
| + | > **==此方法必须使用`Equals()`判断相等。==** | ||
| + | |||
| + | ```javascript | ||
| + | let bounds = Bounds(Vector(0, | ||
| + | ``` | ||
| + | |||
| + | - `center`中心位置 | ||
| + | - `size`尺寸 | ||
| + | - `extents`尺寸(一半) | ||
| + | - `min`最小点 | ||
| + | - `max`最大点 | ||
| 行 73: | 行 91: | ||
| ``` | ``` | ||
| - | - `r`:颜色数值 | + | - `r`颜色数值 |
| - | - `g`:颜色数值 | + | - `g`颜色数值 |
| - | - `b`:颜色数值 | + | - `b`颜色数值 |
| - | - `a`:透明度数值 | + | - `a`透明度数值 |
| 行 84: | 行 102: | ||
| > (只读)Array检测函数的返回值,属性可获取数组(封装)信息。 | > (只读)Array检测函数的返回值,属性可获取数组(封装)信息。 | ||
| - | - `GetCount()`:获取数组长度 | + | - `GetCount()`获取数组长度 |
| - | - `Get(index: int)`:获取指定索引的内容 | + | - `Get(index: int)`获取指定索引的内容 |
| 行 93: | 行 111: | ||
| > (只读)射线检测函数的返回值,属性可获取射线检测结果(是否碰撞、最终坐标、检测实体等)。 | > (只读)射线检测函数的返回值,属性可获取射线检测结果(是否碰撞、最终坐标、检测实体等)。 | ||
| - | - `IsHit`:是否碰撞射线(如果`IsHit | + | - `IsHit`是否碰撞射线(如果`IsHit = true && Entity = null`,可能表示检测到世界地形) |
| - | - `Point`:射线检测坐标(如没有产生碰撞,则坐标即是默认终点) | + | - `Point`射线检测坐标(如没有产生碰撞,则坐标即是默认终点) |
| - | - `Entity`:射线碰撞实体(如果对象不是标准的`Entity`实体,或对象为**静态模型(本地静态模型)**,则返回为`null`) | + | - `Entity`射线碰撞实体(如果对象不是标准的`Entity`实体,或对象为**静态模型(本地静态模型)**,则返回为`null`) |
| + | - `Distance`射线实际产生距离 | ||
| + | - `Normal`射线检测表面角度 | ||
| 行 109: | 行 129: | ||
| > **注意:结构内的三种Vector类型虽然命名不同,但均是以`Vector`作为属性类型,因此在某些情况下可以忽略命名问题。** | > **注意:结构内的三种Vector类型虽然命名不同,但均是以`Vector`作为属性类型,因此在某些情况下可以忽略命名问题。** | ||
| - | - `Tag`:筛选标签(可空`"" | + | - `Tag`筛选标签(可空`"" |
| - | - `Pos`:坐标(Vector,不可空,至少要有一个) | + | - `Pos`坐标(Vector,不可空,至少要有一个) |
| - | - `Angle`:旋转角度(Vector,可空) | + | - `Angle`旋转角度(Vector,可空) |
| - | - `Scale`:缩放(Vector,可空) | + | - `Scale`缩放(Vector,可空) |
| 行 122: | 行 142: | ||
| > 当游戏配置(通过`SetGameOption`被绑定过的)发生主动更新时触发(或有数值被改变)。 | > 当游戏配置(通过`SetGameOption`被绑定过的)发生主动更新时触发(或有数值被改变)。 | ||
| > | > | ||
| - | > 每次客户端脚本加载完成时,都会自动触发一次(`optionKey==null`)。 | + | > 每次客户端脚本加载完成时,都会自动触发一次(`optionKey = null`)。 |
| ```javascript | ```javascript | ||
| 行 163: | 行 183: | ||
| > 退出游戏,关闭沙盘引擎程序。 | > 退出游戏,关闭沙盘引擎程序。 | ||
| > | > | ||
| - | > **==由于安全考虑,此功能暂不可用,应考虑替换为`UnloadMod()`。==** | + | > **出于安全考虑,此功能实际效果替换为`UnloadMod()`。** |
| ```javascript | ```javascript | ||
| 行 187: | 行 207: | ||
| > 判断两个对象是否相同(相等)。 | > 判断两个对象是否相同(相等)。 | ||
| > | > | ||
| - | > **注意:此方法是判断两者相同的最佳方法,同时也是==浮点数据类型(`Vector | Vector2 | Color`)==的唯一判断方法。** | + | > 注意:此方法是判断两者相同的最佳方法,同时也是**浮点数据类型(`Vector | Vector2 | Color`)**的唯一判断方法。 |
| [note2] | [note2] | ||
| - | **对于浮点类型相关的扩展类型,直接使用`==`无法进行有效判断(将始终返回`false`),相关类型必须使用此方法判断相同。 | + | 对于浮点类型相关的扩展类型,直接使用`==`无法进行有效判断(将始终返回`false`),必须使用此方法判断相同。 |
| 除此之外,常规数据类型可正常使用`==`进行判断。 | 除此之外,常规数据类型可正常使用`==`进行判断。 | ||
| 行 198: | 行 218: | ||
| ```javascript | ```javascript | ||
| - | function Equals( a, b ): bool | + | function Equals( a: any, b: any ): bool |
| ``` | ``` | ||
| 行 295: | 行 315: | ||
| ``` | ``` | ||
| - | - `eventName`:希望监听的`function`名称,通常用于监听引擎原生事件,但也支持自定义事件 | + | - `eventName`希望监听的`function`名称,通常用于监听引擎原生事件,但也支持自定义事件 |
| - | - `action`:当事件触发时执行的`function`,支持`Lambda`表达式 | + | - `action`当事件触发时执行的`function`,支持`Lambda`表达式 |
| - | - `sort`:监听方法的执行顺序,**数值越小越靠前**,默认顺序为`1`(在原方法执行后执行),原方法Sort默认保持为`0`(唯一) | + | - `sort`监听方法的执行顺序,**数值越小越靠前**,默认顺序为`1`(在原方法执行后执行),原方法Sort默认保持为`0`(唯一) |
| - | - `return`:监听事件的Hash值,可用于取消监听 | + | - `return`监听事件的Hash值,可用于取消监听 |
| ```javascript | ```javascript | ||
| 行 340: | 行 360: | ||
| ``` | ``` | ||
| - | - `eventHash`:希望取消监听的`eventHash`,通过`AddListener()`返回值获取 | + | - `eventHash`希望取消监听的`eventHash`,通过`AddListener()`返回值获取 |
| ```javascript | ```javascript | ||
| 行 360: | 行 380: | ||
| ``` | ``` | ||
| - | - `functionName`:触发的函数\事件名称 | + | - `functionName`触发的函数\事件名称 |
| - | - `params`:附带参数(如存在) | + | - `params`附带参数(如存在) |
| ```javascript | ```javascript | ||
| 行 377: | 行 397: | ||
| > **补充:如果不填写任何参数,则表示加载到初始入口世界(`Main`世界)。** | > **补充:如果不填写任何参数,则表示加载到初始入口世界(`Main`世界)。** | ||
| > | > | ||
| - | > **==注意:我们建议不指定固定的端口号,而是使用`Mod.json -> NetworkPort`机制设定模组端口,并设置当前方法参数`Port=0`(自动识别模组`NetworkPort`)。==** | + | > 通常**不建议**指定**固定**的端口号,而是使用`Mod.json -> NetworkPort`机制设定模组端口,并设置当前方法参数`Port=0`(自动识别模组`NetworkPort`)。 |
| ```javascript | ```javascript | ||
| 行 772: | 行 792: | ||
| ```javascript | ```javascript | ||
| function GenerateUUID(): | function GenerateUUID(): | ||
| - | ``` | ||
| - | |||
| - | |||
| - | |||
| - | ### Distance() | ||
| - | |||
| - | > 获取两个坐标点之间的距离,单位是沙盘引擎世界距离。 | ||
| - | > | ||
| - | > **注意:此方法将获得精准的距离数据,如果大量调用可能会影响性能,考虑使用距离平方(`DistanceSqrt`)。** | ||
| - | |||
| - | ```javascript | ||
| - | function Distance( pos: Vector, pos2: Vector ): float | ||
| - | ``` | ||
| - | |||
| - | |||
| - | |||
| - | ### DistanceSqrt() | ||
| - | |||
| - | > 获取两个坐标点之间的距离平方。 | ||
| - | > | ||
| - | > **注意:此方法将获得距离平方,应该使用`Distance * Distance`作为最终距离判断。** | ||
| - | |||
| - | ```javascript | ||
| - | function DistanceSqrt( pos: Vector, pos2: Vector ): float | ||
| - | ``` | ||
| - | |||
| - | |||
| - | |||
| - | ### GreaterDistance() | ||
| - | |||
| - | > 获取**两个坐标点之间距离**是否**大于目标距离。** | ||
| - | > | ||
| - | > **注意:此方法内部使用距离平方运算,距离可能不会特别精准(性能会更高),目标距离无需进行平方运算,==可以按照常规`Distance`使用。==** | ||
| - | |||
| - | ```javascript | ||
| - | function GreaterDistance( pos: Vector, pos2: Vector, distance: float ): bool | ||
| ``` | ``` | ||
| 行 832: | 行 816: | ||
| > 如果只希望获取`Entity`部分类型,可使用`layer`参数进行[实体类型层(位)](reference/ | > 如果只希望获取`Entity`部分类型,可使用`layer`参数进行[实体类型层(位)](reference/ | ||
| > | > | ||
| - | > **注意:此方法会检测世界地形(除非参数`includeTerrain = false`),如果`IsHit | + | > **注意:此方法会检测世界地形(除非参数`includeTerrain = false`),如果`IsHit = true && Entity = null`,表示最终检测到地形**。 |
| ```javascript | ```javascript | ||
| 行 838: | 行 822: | ||
| ``` | ``` | ||
| - | - `start`:起始点 | + | - `start`起始点 |
| - | - `over`:结束点 | + | - `over`结束点 |
| - | - `layer`:筛选layer层,默认为`0`,可用于筛选判断[实体类型层(位)](reference/ | + | - `layer`筛选layer层,默认为`0`,可用于筛选判断[实体类型层(位)](reference/ |
| - | - `RayTraceResult`:返回值([类型参考](scripting/ | + | - `RayTraceResult`返回值([类型参考](scripting/ |
| ```javascript | ```javascript | ||
| 行 915: | 行 899: | ||
| DLog(getPlayer.Name); | DLog(getPlayer.Name); | ||
| } | } | ||
| - | ``` | ||
| - | |||
| - | |||
| - | |||
| - | ### InPoly() | ||
| - | |||
| - | > 获取某个点是否在多边形点范围内(X\Z是否在某片2D形状范围内)。 | ||
| - | > | ||
| - | > **注意:此方法判断坐标系只需要X\Z轴,Y轴数值可以忽略(最低要求输入3个多边形点,最多支持8个多边形点验证)。** | ||
| - | |||
| - | ```javascript | ||
| - | function InPoly( pos: Vector, p1: Vector, p2: Vector, p3: Vector, p4: Vector = null, p5: Vector = null, p6: Vector = null, p7: Vector = null, p8: Vector = null ): bool | ||
| - | ``` | ||
| - | ```javascript | ||
| - | DLog(InPoly(Vector(0, | ||
| ``` | ``` | ||
| 行 1056: | 行 1025: | ||
| RemoveVectorPoint(" | RemoveVectorPoint(" | ||
| ``` | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### FormatPlainText() | ||
| + | |||
| + | > 格式化指定文本为纯文本(去除`HTML|UBB`),可用于获取除表情外等真实文本及长度。 | ||
| + | |||
| + | ```javascript | ||
| + | function FormatPlainText( text: string, includeUBB: bool = true ): string | ||
| + | ``` | ||
| + | |||
| + | - `includeUBB`:如果设置为`true`,则允许包含`UBB`(忽略处理)。 | ||
| 行 1066: | 行 1047: | ||
| ```javascript | ```javascript | ||
| - | function FormatRichText( text: string, onlyEmoji: bool = false ) | + | function FormatRichText( text: string, onlyEmoji: bool = false ): string |
| ``` | ``` | ||
| 行 1083: | 行 1064: | ||
| ```javascript | ```javascript | ||
| - | function FormatDefineText( text: string, includeColor: | + | function FormatDefineText( text: string, includeColor: |
| ``` | ``` | ||
| 行 1132: | 行 1113: | ||
| - `sampleAll`是否采样所有静态对象,否则仅采样地面对象(陆地)。 | - `sampleAll`是否采样所有静态对象,否则仅采样地面对象(陆地)。 | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||