这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
index [2023/11/28 23:53] – bibiboxs | index [2024/05/02 20:59] (当前版本) – bibiboxs | ||
---|---|---|---|
行 1: | 行 1: | ||
< | < | ||
- | # World/Main* | + | # 《沙盘引擎》主页 |
- | ## Event | + | ## 公告信息 |
+ | > - ==本页使用了[translate.js](http:// | ||
+ | > - 我们计划于`2024-05`编写一份**完整的线性文档**(玩家介绍+开发者指引),敬请期待! | ||
- | ### OnScriptLoad() | + | ## 快速介绍 |
+ | ### 这是什么? | ||
+ | + 是一款使用[Unity](https:// | ||
+ | + 更多地,是一个以创意作为燃料的==**引擎**== | ||
- | > 当**世界端脚本**被完整加载后调用。 | + | ### 为了什么? |
- | > | + | + 提供一个==**单机+联机**==双模式的游戏平台。 |
- | > 如果需要获取到一些初始化传递数据,可通过`SetGlobalVars() | GetGlobalVars()`以及`本地player.UserData`等方式来读写。 | + | + 帮助游戏开发者==**快速建立**==理想Demo。 |
+ | ### 怎么玩? | ||
+ | + 对于**单机**玩家:在拥有==**引擎**== 的基础上 | ||
+ | 自行选择游戏 ==**模组**==游玩,享受独自的乐趣 | ||
+ | + 对于**联机**玩家:选择心水的==**模组**==,找到志同道合的伙伴,开始热火朝天/ | ||
+ | + 对于**开发者**:只需要一份创意想法,最简单至只用==**记事本**==即可实现项目创造,抛弃传统工具的复杂环境配置和实现方法 | ||
+ | <iframe src=" | ||
- | ### OnScriptUnload() | + | ## 快速导航 |
+ | ### 名词解释 | ||
+ | + **沙盘引擎:**你的游戏机 | ||
+ | + **游戏模组:**你的游戏 | ||
+ | + **模型:**游戏里的物品 | ||
+ | + **代码:**游戏的运行规则 | ||
+ | + **玩游戏:**启动引擎+选择玩法模组 | ||
- | > 当脚本即将被释放时调用。 | + | ### 玩家 |
+ | + [获取引擎程序](releases/# | ||
+ | + [获取游戏模组](releases/# | ||
+ | ### 开发者 | ||
+ | + [流程速览](thread/ | ||
+ | + [静态资源](extend/ | ||
+ | + [动态实现](developer/ | ||
- | ### OnFrameUpdate( deltaTime ) | + | ## 引擎介绍 |
+ | ==**原生资源库、多人联机支持、轻量级脚本API编写...沙盘的潜力不只这些!**== | ||
- | > 当世界端加载完成后每帧调用。 | + | ==**《沙盘引擎》是一份完全支持模组的游戏,同样也是制作游戏的开发工具。**== |
- | 不应该将**过于复杂**的函数在此处执行,可能会影响服务器运算。 | + | 官方Wiki(本站)正在努力建设中,部分页面可能仍然处于未建立的状态,我们正在努力的完善中! |
- | ```javascript | + | **《沙盘引擎》是完完全全的社区项目,单纯出于兴趣的用爱发电和制作,请多给一些时间和理解~**。 |
- | function OnFrameUpdate( deltaTime:float ) //增量时间 | + | |
- | ``` | + | |
+ | ## 里程碑记录 | ||
+ | - **《沙盘引擎》Steam商店于2024-03-30正式公开** | ||
+ | - 《沙盘引擎》完整版初步定于2024年10月正式发布 | ||
+ | - ==2023-12月初将开启**首个公开测试版本**,欢迎加入QQ群聊参与测试。== | ||
+ | - ==2023-11月初将开启**初代玩家**内测版本,欢迎加入QQ群聊参与测试。== | ||
+ | - 官方Wiki预计在2023-09月进行进阶完善,敬请期待,届时会有更适合阅读的版本。 | ||
+ | - 开发者文档已在2023-08月大部分完善,可根据需要参考。 | ||
+ | - 如果你对此游戏有兴趣,欢迎加入群聊[《沙盘引擎》交流群](http:// | ||
- | ### OnThrowCastTrigger( tag, point) | + | ![](asset: |
- | > 当`ThrowCast`触发碰撞后调用。 | ||
- | > | ||
- | > **此方法支持`return bool`(可选),这将影响一些Throw是否执行其自带绑定Action方法,事件返回值默认为`true`。** | ||
- | > | ||
- | > 例如:`CreateThrowCast()`时在末尾参数绑定了一个`Action`,当ThrowCast发生碰撞后会优先调用当前事件,如果此处代码返回`false`则会阻止其**绑定Action**方法执行(如:默认RPG武器等,如果返回`false`将不会产生爆炸效果)。 | ||
- | ```javascript | + | ## 版本信息 |
- | function OnThrowCastTrigger( tag: string, point: Vector ): bool | + | |
- | ``` | + | |
- | + | > **版本更新日志(Changelog):https:// | |
- | ### OnTimeChange( oldTime, newTime | + | ==我们正在抓紧开发第一个[正式测试版本](releases " |
- | > 当世界时间发生改变时调用。 | + | ==《沙盘引擎》预计在2024年,上架及发布**Steam商店**。== |
- | ```javascript | ||
- | function OnTimeChange( oldTime, newTime ) | ||
- | { | ||
- | DLog(" | ||
- | DLog(" | ||
- | } | ||
- | ``` | ||
- | + | ## 引擎概述 | |
- | ## Function | + | ![](asset: |
- | ### Exec() | + | <font color=#FF0088> |
- | > 执行一段脚本代码(Client\World脚本不互通)。 | + | <font color=# |
- | ```javascript | + | ## 引擎特性分析 |
- | function Exec( jsCode: string ) | + | |
- | ``` | + | |
+ | ### 主要特点 | ||
+ | * **高度自定义**:< | ||
+ | * **轻量级脚本**:< | ||
+ | * **开放的资源库**:< | ||
+ | * **丰富的API**:< | ||
+ | * **内置地图编辑器**:< | ||
+ | * **原生联机支持**:< | ||
+ | * **允许商用的打包输出**:< | ||
- | ### SetHostName() | + | ### 不完美之处 |
- | > 设置主机房间名称(当主机房间被公开或查询时,单机游戏可以忽略)。 | + | * **平台局限性**:当前引擎仅支持PC端,未来可能支持移动端及其他平台。 |
- | > | + | * **有限开发**:游戏创作主题玩法主要偏向开放世界与自由模式。**差异过大**的主题和玩法可能会提升开发难度。 |
- | > **默认值:**`Sandtable Engine Server`。 | + | |
- | ```javascript | ||
- | function SetHostName( name: string ) | ||
- | ``` | ||
- | - **name:**主机房间名称文本(最大限制在64字符)。 | ||
+ | ## Indienova 游戏资料 | ||
+ | https:// | ||
- | ### GetHostName() | ||
- | > 获取主机房间名称。 | ||
- | ```javascript | + | ## 引擎开发者及工作室信息 |
- | function GetHostName(): | + | |
- | ``` | + | |
+ | https:// | ||
- | ### SetHostInfo() | ||
- | > 设置主机房间信息\公告(目前主要用于`TAB`面板封面部分介绍,以及有关房间的介绍信息等)。 | + | ## 联系我们 & 加入社区 |
- | > | + | **有什么好的创意或者想法吗?非常欢迎联系我们,让我们看到有人在关注!** |
- | > **默认值:`Mod Version: XXX`**。 | + | **我们很愿意聆听你对《沙盘引擎》的想法和建议,欢迎勾搭~** |
- | ```javascript | + | - E-Mail:fantasyjoyed@163.com |
- | function SetHostInfo( info: string | + | - QQGroup:[798458058](http:// |
- | ``` | + | - Kook:https:// |
+ | - Discord: https:// | ||
- | - **info:**主机房间信息\公告(最大限制在64字符)。 | ||
- | ### GetHostInfo() | ||
- | > 获取主机房间信息\公告。 | ||
- | ```javascript | ||
- | function GetHostInfo(): | ||
- | ``` | ||
- | ### SetPassword() | ||
- | > 设置主机房间密码(当主机房间被公开或查询时,单机游戏可以忽略)。 | ||
- | ```javascript | ||
- | function SetPassword( password: string ) | ||
- | ``` | ||
- | ### GetPassword() | ||
- | > 获取主机房间密码。 | ||
- | ```javascript | ||
- | function GetPassword(): | ||
- | ``` | ||
- | ### SetMaxPlayers() | ||
- | > 设置主机房间最大人数(支持范围`1~100人`)。 | ||
- | ```javascript | ||
- | function SetMaxPlayers( num: int ) | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### GetMaxPlayers() | ||
- | |||
- | > 获取主机房间最大玩家数。 | ||
- | |||
- | ```javascript | ||
- | function GetMaxPlayers(): | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### SetTime() | ||
- | |||
- | > 设置当前游戏世界时间。 | ||
- | > | ||
- | > **注意:每次加载新世界场景后,时间都将重新替换为【地图文件配置——默认时间】。** | ||
- | |||
- | ```javascript | ||
- | function SetTime( hour: int, minute: int ) | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### GetTime() | ||
- | |||
- | > 获取游戏世界时间实例(`WorldTime`)。 | ||
- | |||
- | ```javascript | ||
- | let worldTime = GetTime(); | ||
- | DLog(" | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### SetWeather() | ||
- | |||
- | > 设置游戏世界天气,具体参考[天气ID](reference/ | ||
- | > | ||
- | > **注意:每次加载新世界场景后,天气都将重新替换为【地图文件配置——随机天气(天气池)】。** | ||
- | |||
- | ```javascript | ||
- | function SetWeather( weather: int ) | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### GetWeather() | ||
- | |||
- | > 获取游戏世界天气。 | ||
- | |||
- | ```javascript | ||
- | function GetWeather(): | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### GetRandomWeather() | ||
- | |||
- | > 随机获取游戏世界天气,获取方式根据参数决定。 | ||
- | |||
- | ```javascript | ||
- | function GetRandomWeather( usePool: bool = true ): int | ||
- | ``` | ||
- | |||
- | - `usePool`:是否使用【地图文件天气池】概率随机,否则是索引硬随机 | ||
- | |||
- | |||
- | |||
- | ### SetGravity() | ||
- | |||
- | > 设置游戏世界物理重力,分别为`横向X、纵向Y、前后Z`,默认为`Vector(0.0, | ||
- | |||
- | ```javascript | ||
- | function SetGravity( space: Vector ) | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### GetGravity() | ||
- | |||
- | > 获取游戏世界物理重力。 | ||
- | |||
- | ```javascript | ||
- | function GetGravity(): | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### SetWorldColor() | ||
- | |||
- | > 设置游戏世界叠加色调,默认为白色`Color(255, | ||
- | > | ||
- | |||
- | ```javascript | ||
- | function SetWorldColor( color: Color ) | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### GetWorldColor() | ||
- | |||
- | > 获取游戏世界叠加色调。 | ||
- | |||
- | ```javascript | ||
- | function GetWorldColor(): | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### SetGameRule() | ||
- | |||
- | > 设置指定游戏规则(不区分大小写),可用于修改更多细节内容,具体参考[游戏规则Keys](reference/ | ||
- | > | ||
- | > 修改时请严格确保`Key > Value`类型正确,否则可能会引起异常。 | ||
- | > | ||
- | > 此功能不仅可修改《沙盘引擎》内置规则,在有需要情况下,也可以作为自定义规则字典填充(前提:避开内置key值)。 | ||
- | > | ||
- | > **注意:此选项设置的值只在当前世界生效,切换其他世界后将重置。** | ||
- | |||
- | ```javascript | ||
- | function SetGameRule( key: string, value: any ) | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### ResetGameRule() | ||
- | |||
- | > 重置指定游戏规则默认数值。 | ||
- | |||
- | ```javascript | ||
- | function ResetGameRule( key: string ) | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### ResetAllGameRules() | ||
- | |||
- | > 重置所有游戏规则默认数值。 | ||
- | |||
- | ```javascript | ||
- | function ResetAllGameRules() | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### GetGameRule() | ||
- | |||
- | > 获取指定游戏规则数值(不区分大小写),具体参考[游戏规则Keys](reference/ | ||
- | |||
- | ```javascript | ||
- | function GetGameRule( key: string, defaultValue: | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### GetServerTickCount() | ||
- | |||
- | > 获取世界脚本运行时间秒数(float)。 | ||
- | |||
- | ```javascript | ||
- | function GetServerTickCount(): | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### Message() | ||
- | |||
- | > 给全服在线玩家发送一条公屏消息(在消息框中)。 | ||
- | |||
- | ```javascript | ||
- | function Message( text: string ) | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### Announce() | ||
- | |||
- | > 给全服在线玩家发送一条**公告\大文字**消息,具体类型样式参考[《世界资源实例汇总》](https:// | ||
- | |||
- | ```javascript | ||
- | function Announce( text: string, type: int = 0, time: float = 6 ) | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### Subtitle() | ||
- | |||
- | > 给全服在线玩家发送一条**底部字幕**消息。 | ||
- | |||
- | ```javascript | ||
- | function Subtitle( text: string ) | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### RayTrace() | ||
- | |||
- | > 生成一条**检测射线**,可用于检测**两点之间**实体对象的碰撞。 | ||
- | > | ||
- | > 多数情况下,建议使用World端方法进行检测,而不是Client端方法。 | ||
- | |||
- | ```javascript | ||
- | function RayTrace( start: Vector, over: Vector, flags: int = 0 ): RayTraceResult | ||
- | ``` | ||
- | |||
- | - `start`:起始点 | ||
- | |||
- | - `over`:结束点 | ||
- | |||
- | - `flags`:筛选layer层,默认为0,可用于筛选判断[实体类型层(位)](reference/ | ||
- | - `RayTraceResult`:返回值([类型参考](scripting/ | ||
- | |||
- | ```javascript | ||
- | // | ||
- | let result = RayTrace(Vector(0, | ||
- | DLog(result.IsHit); | ||
- | DLog(result.Point); | ||
- | DLog(result.Entity) | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### CreateDamage() | ||
- | |||
- | > 生成一处**范围原生伤害**,只有范围伤害的效果。 | ||
- | |||
- | ```javascript | ||
- | function CreateDamage( pos: Vector, damage: int, radius: float, from: Entity = null, damageType: int = 0, ignoreSelf = false ) | ||
- | ``` | ||
- | |||
- | - `pos`:起始点 | ||
- | |||
- | - `damage`:伤害值 | ||
- | - `radius`:伤害产生范围 | ||
- | |||
- | - `from`:发起伤害单位(可空) | ||
- | - `damageType`:[伤害类型](reference/ | ||
- | |||
- | - `ignoreSelf`:是否忽略**发起伤害单位**自身(如`from`为空则没有意义) | ||
- | |||
- | |||
- | |||
- | ### CreateExplosion() | ||
- | |||
- | > 在指定位置**生成一场爆炸**,不同爆炸类型有不同的效果范围和伤害。 | ||
- | |||
- | ```javascript | ||
- | function CreateExplosion( pos: Vector, type: int = 0 ) | ||
- | ``` | ||
- | |||
- | | Type | 说明 | ||
- | | ---- | -------- | | ||
- | | 0 | 小型爆炸 | | ||
- | | 1 | 中型爆炸 | | ||
- | | 2 | 大型爆炸 | | ||
- | |||
- | |||
- | |||
- | ### CreateExplosionForce() | ||
- | |||
- | > 在指定位置生成一场**物理爆炸力(没有伤害)**,附近的物理刚体将受到力影响(类似爆炸冲击力)。 | ||
- | |||
- | ```javascript | ||
- | function CreateExplosionForce( pos: Vector, force: float, radius: float ) | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### CreateRayPowerCast() | ||
- | |||
- | > 在指定位置生成一条**光线射线(不会穿透物体)**,与射线检测功能基本相同,但会额外多出光线效果(例如:枪械弹道)。 | ||
- | |||
- | ```javascript | ||
- | function CreateRayPowerCast( start: Vector, over: Vector, color: Color, width: float = 0.2, time: float = 0.1 ) | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### CreateThrowCast() | ||
- | |||
- | > 在指定位置生成一条**投掷抛物射线(物理)**,与光线射线功能基本相同,但会额外多出物理效果。 | ||
- | > | ||
- | > **注意:投掷射线将在发生碰撞后销毁,并触发【碰撞后事件】(Event优先级:`OnThrowCastTrigger() > BindAction()? | ||
- | |||
- | ```javascript | ||
- | function CreateThrowCast( start: Vector, direction: Vector, color: Color, width: float = 0.2, speed: float = 1.0, tag: string = "", | ||
- | ``` | ||
- | |||
- | ```javascript | ||
- | CreateThrowCast(Vector(0, | ||
- | DLog(" | ||
- | }); | ||
- | ``` | ||
- | |||
- | - **start:**射线起点坐标 | ||
- | - **direction:**射线发射方向向量 | ||
- | - **color:**射线颜色 | ||
- | - **width:**射线宽度 | ||
- | - **speed:**投掷物理速度 | ||
- | - **tag:**标签,仅有识别作用,主要用于`OnThrowCastTrigger() `事件参数 | ||
- | - **action:**碰撞时触发方法(参数:`Vector`) | ||
- | |||
- | |||
- | |||
- | ### CreateModelThrowCast() | ||
- | |||
- | > 在指定位置生成一条**包含模型的投掷抛物射线(物理)**,与`CreateThrowCast()`功能基本相同,但会额外多出子模型效果(例如射出的子弹、炮弹、弓箭、手榴弹模型等)。 | ||
- | |||
- | ```javascript | ||
- | function CreateModelThrowCast( model: int, localPos: Vector, localAngle: Vector, localScale: Vector, start: Vector, over: Vector, color: Color, width: float = 0.2, time: float = 0.1 ) | ||
- | ``` | ||
- | |||
- | - **model:**子模型ID | ||
- | - **localPos:**子模型的[本地]坐标 | ||
- | - **localAngle:**子模型的[本地]欧拉角度 | ||
- | - **localScale:**子模型的[本地]缩放 | ||
- | - *其他参数与`CreateThrowCast()`*相同 | ||
- | |||
- | |||
- | |||
- | ### PlaySoundForAll() | ||
- | |||
- | > 为所有当前在线的玩家播放一段2D音频。 | ||
- | > | ||
- | > 注意:此操作相当于封装了**遍历player.PlaySound()**方法,播放的是客户端本地声音,后加入的玩家不会听到此声音。 | ||
- | |||
- | ```javascript | ||
- | function PlaySoundForAll( audioID: int, loop: bool = false, volume: float = 1f ) | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### Play3DSoundForAll() | ||
- | |||
- | > 为所有当前在线的玩家播放一段3D音频。 | ||
- | > | ||
- | > 注意:此操作相当于封装了**遍历player.Play3DSound()**方法,播放的是客户端本地声音,后加入的玩家不会听到此声音。 | ||
- | |||
- | ```javascript | ||
- | function Play3DSoundForAll( audioID: int, pos: Vector, radius: float = 80, loop: bool = false, volume: float = 1f ) | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### PlaySound() | ||
- | |||
- | > 在服务器世界播放一段2D音频(与客户端音频方法相似,但播放的声音不受`Client\Audio`类控制,客户端也无法停止播放)。 | ||
- | > | ||
- | > 即便稍后进入的玩家也会同步播放此声音(播放进度同步),音频实例将一直存在世界中,直到被(自动\手动)销毁。 | ||
- | |||
- | ```javascript | ||
- | function PlaySound( audioID: int, loop: bool = false, volume: float = 1f ): string //UUID | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### Play3DSound() | ||
- | |||
- | > 在服务器世界播放一段2D音频(此方法播放的声音不受`Client\Audio`类控制,客户端也无法停止播放)。 | ||
- | > | ||
- | > 即使后进入的玩家也会同步播放此声音(播放进度同步),音频实例将一直存在世界中,直到被(自动\手动)销毁。 | ||
- | |||
- | ```javascript | ||
- | function Play3DSound( audioID: int, pos: Vector, radius: float, loop: bool = false, volume: float = 1f ): string //UUID | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### StopSound() | ||
- | |||
- | > 停止并销毁一个服务器世界声音实例。 | ||
- | |||
- | ```javascript | ||
- | function StopSound( uuid: string ): bool // | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### PauseSound() | ||
- | |||
- | > 暂停播放一个服务器世界声音实例。 | ||
- | > | ||
- | > 注意:此操作不会销毁实例,如果不使用时忘记销毁,可能会一直占用服务器资源。 | ||
- | |||
- | ```javascript | ||
- | function PauseSound( uuid: string ): bool // | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### ResumeSound() | ||
- | |||
- | > 继续播放一个服务器世界声音实例。 | ||
- | |||
- | ```javascript | ||
- | function ResumeSound( uuid: string ): bool // | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### SetSoundWorld() | ||
- | |||
- | > 设置一个**服务器世界声音实例**的网络世界(不同世界将无法听到声音)。 | ||
- | |||
- | ```javascript | ||
- | function SetSoundWorld( uuid: string, world: int ): bool // | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### BindKey() | ||
- | |||
- | > 绑定一个**服务器按键**(当前场景有效),可用于监听**某个玩家的某键**被按下\抬起。 | ||
- | > | ||
- | > 按键参数可填写**UnityEngine.KeyCode(Enum)**==索引或名称==作为按键参数。 | ||
- | |||
- | ```javascript | ||
- | function BindKey( keyTag: string, key1: string, key2: string = " | ||
- | ``` | ||
- | |||
- | - `keyTag`:按键标签(用于识别) | ||
- | - `key1`:按键1标准名称(如' | ||
- | - `key2`:默认' | ||
- | - `key3`:默认' | ||
- | |||
- | |||
- | |||
- | ### UnbindKey() | ||
- | |||
- | > 取消绑定一个**服务器按键**,对其按键监听不再生效。 | ||
- | |||
- | ```javascript | ||
- | function UnbindKey( keyTag: string ) | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### UnbindAllKey() | ||
- | |||
- | > 取消绑定所有**服务器按键**,对其按键监听不再生效。 | ||
- | |||
- | ```javascript | ||
- | function UnbindAllKey() | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### BindNativeKey() | ||
- | |||
- | > 绑定一个**服务器监听原生公开按键**(当前场景有效),只可用于监听**某个玩家的某原生按键**被按下\抬起,**不会远程绑定任何原生公开按键**。 | ||
- | > | ||
- | > 此功能需要客户端提前绑定了`BindNativeKey()`才有监听意义。 | ||
- | |||
- | ```javascript | ||
- | function BindNativeKey( keyTag: string ) | ||
- | ``` | ||
- | |||
- | - `keyTag`:按键标签(用于识别) | ||
- | |||
- | |||
- | |||
- | ### UnbindNativeKey() | ||
- | |||
- | > 取消绑定一个**服务器监听原生公开按键**,对其按键监听不再生效。 | ||
- | |||
- | ```javascript | ||
- | function UnbindNativeKey( keyTag: string ) | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### UnbindAllNativeKey() | ||
- | |||
- | > 取消绑定所有**服务器监听原生公开按键**,对其按键监听不再生效。 | ||
- | |||
- | ```javascript | ||
- | function UnbindAllNativeKey() | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### WriteFile() | ||
- | |||
- | > 写入一个文件到模组空间目录`Mod/ | ||
- | > | ||
- | > 此功能通常用于实现**游戏\服务器存档、配置**等写入,建议使用JSON功能进行序列化。 | ||
- | |||
- | ```javascript | ||
- | function WriteFile( fileName: string, content: string ) | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### ReadFile() | ||
- | |||
- | > 从模组空间目录读取一个文件,如果文件不存在则返回空白文本。 | ||
- | |||
- | ```javascript | ||
- | function ReadFile( fileName: string ): string | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### SetModArchive() | ||
- | |||
- | > 设置并覆盖**当前模组**的持久化存储数据(字符串,可通过Json扩展,最长限制512字符)。 | ||
- | > | ||
- | > 数据内容存储到`ModArchive.json`文件,**任意模组之间可相互获取,但只有当前模组可写入自身数据**。 | ||
- | > | ||
- | > ==(出于安全考虑,此方法仅限World端使用,Client端是只读的)== | ||
- | |||
- | ```javascript | ||
- | function SetModArchive( content: string ) | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### GetModArchive() | ||
- | |||
- | > 尝试读取**指定模组**的持久化存储数据(可通过`SetModArchive()`写入修改),如不存在则返回空文本。 | ||
- | > | ||
- | > 注意:如果不填写参数,默认获取当前模组的数据。 | ||
- | |||
- | ```javascript | ||
- | function GetModArchive( package: string = null ): string | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### SetSaveItem() | ||
- | |||
- | > 设置并覆盖【存档数据槽(`Slot`)】指定`Key`的项目,并以最终Json的格式存储,仅支持基础类型(`string\number\bool...`)。 | ||
- | > | ||
- | > 存档槽默认参数为`0`,如果只用于本地持久化数据存储,或者不需要多存档槽的设计,可以忽略`Slot`参数。 | ||
- | > | ||
- | > **注意:此方法最多支持50个存档槽(文件),以及单文件最大1MB的写入空间。有关持久化存档相关内容,无论是单存档、多存档或其他使用场景,都可尝试此方案进行存储。** | ||
- | > | ||
- | > ==(出于安全考虑,此方法仅限World端使用,Client端是只读的)== | ||
- | |||
- | ```javascript | ||
- | function SetSaveItem( key: string, value: object, slot: int = 0 ) | ||
- | ``` | ||
- | |||
- | ```javascript | ||
- | SetSaveItem(" | ||
- | SetSaveItem(" | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### RemoveSaveItem() | ||
- | |||
- | > 移除【存档数据槽(`Slot`)】指定`Key`的项目**(并非删除存档,而是删除存档中的一个项)**。 | ||
- | > | ||
- | > ==(出于安全考虑,此方法仅限World端使用,Client端是只读的)== | ||
- | |||
- | ```javascript | ||
- | function RemoveSaveItem( key: string, slot: int = 0 ) | ||
- | ``` | ||
- | |||
- | ```javascript | ||
- | SetSaveItem(" | ||
- | RemoveSaveItem(" | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### GetSaveItem() | ||
- | |||
- | > 尝试读取【存档数据槽(`Slot`)】指定`Key`的项目内容,如不存在则返回`defaultValue`。 | ||
- | |||
- | ```javascript | ||
- | function GetSaveItem( key: string, slot: int = 0, defaultValue: | ||
- | ``` | ||
- | |||
- | ```javascript | ||
- | SetSaveItem(" | ||
- | DLog(" | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### ExistSaveItem() | ||
- | |||
- | > 判断【存档数据槽(`Slot`)】指定`Key`的**项目内容是否为空(`bool`)**。 | ||
- | |||
- | ```javascript | ||
- | function ExistSaveItem( key: string, slot: int = 0 ): bool | ||
- | ``` | ||
- | |||
- | ```javascript | ||
- | DLog(ExistSaveItem(" | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### ExistSaveData() | ||
- | |||
- | > 判断【存档数据槽(`Slot`)】存档文件是否已被创建(`bool`)。 | ||
- | |||
- | ```javascript | ||
- | function ExistSaveData( slot: int = 0 ): bool | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### DeleteSaveData() | ||
- | |||
- | > 删除【存档数据槽(`Slot`)】存档文件,包括其文件内所有数据。 | ||
- | > | ||
- | > ==(出于安全考虑,此方法仅限World端使用)== | ||
- | |||
- | ```javascript | ||
- | function DeleteSaveData( slot: int = 0 ): bool | ||
- | ``` | ||