meta data for this page
📚 差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
| scripting:client:core [2025/06/14 05:30] – bibiboxs | scripting:client:core [2025/08/16 04:04] (当前版本) – bibiboxs | ||
|---|---|---|---|
| 行 6: | 行 6: | ||
| ==**有关世界内容的玩法(如:Player、Character、Vehicle等)建议优先使用`World`脚本实现。**== | ==**有关世界内容的玩法(如:Player、Character、Vehicle等)建议优先使用`World`脚本实现。**== | ||
| - | > 如果有某些功能只有ClientAPI支持,可以用`SendDataToServer`相关方法与服务端进行二次通信,以实现**“通过服务端让某个玩家执行一个ClientAPI”**。 | + | > 如果有某些功能只有ClientAPI支持,可以用`RPC\CMD`相关方法与服务端进行二次通信,以实现**“通过服务端让某个玩家执行一个ClientAPI”**。 |
| [note2] | [note2] | ||
| 行 67: | 行 67: | ||
| - | ### OnLocalObserver( character ) | + | ### OnCameraObserver( character ) |
| > 当客户端`Camera.Target`发生变化时调用。 | > 当客户端`Camera.Target`发生变化时调用。 | ||
| 行 94: | 行 94: | ||
| > | > | ||
| > **对于一些特殊情况,可以利用JSON(data参数)进行更详细的内容传输。** | > **对于一些特殊情况,可以利用JSON(data参数)进行更详细的内容传输。** | ||
| + | |||
| + | |||
| + | |||
| + | ### OnTypingStateChange( state ) | ||
| + | |||
| + | > 当客户端**开始\结束**聊天框时调用。 | ||
| 行 139: | 行 145: | ||
| DLog(" | DLog(" | ||
| } | } | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### OnWorldWeatherChange( oldWeather, newWeather ) | ||
| + | |||
| + | > 当世界天气发生改变时调用。 | ||
| + | |||
| + | ```javascript | ||
| + | function OnWorldWeatherChange( oldWeather: int, newWeather: int ) | ||
| ``` | ``` | ||
| 行 165: | 行 181: | ||
| ```javascript | ```javascript | ||
| function OpenUrl( url: string ) | function OpenUrl( url: string ) | ||
| - | ``` | ||
| - | |||
| - | |||
| - | |||
| - | ### BindGameMenuButton() | ||
| - | |||
| - | > 绑定当前场景自定义ESC菜单按钮。 | ||
| - | > | ||
| - | > 此方法适用于对模组主菜单**没有特殊\高级自定义需求**(否则应该考虑使用FairyGUI自制菜单),可以通过此方法**快速**的建立一个**游戏原生主菜单**。 | ||
| - | > | ||
| - | > **注意:此方法通常只需要在主菜单场景执行一次,绑定代码只在当前场景生效,==切换场景后将会自动重置默认绑定==。** | ||
| - | |||
| - | [note2] | ||
| - | |||
| - | 此方法支持绑定内置(宏)按钮,这将直接引用引擎内置按钮(功能及翻译),详情可参考下方表格。 | ||
| - | |||
| - | **如果绑定的是一个内置按钮,则只需要填写参数0即可。** | ||
| - | |||
| - | | 内置按钮(宏) | 说明 | ||
| - | | -------------- | ------------------------------------------------------------ | | ||
| - | | `@default` | ||
| - | | `@space` | ||
| - | | `@options` | ||
| - | | `@multiplayer` | 多人游戏浏览器 | ||
| - | | `@mapeditor` | ||
| - | | `@developers` | ||
| - | | `@native` | ||
| - | | `@quit` | ||
| - | |||
| - | [/note] | ||
| - | |||
| - | [note3] | ||
| - | |||
| - | 注意:当玩家处于非主菜单(初始Main场景)界面时,引擎会自动补充【继续游戏】、【返回主菜单】两个额外的菜单按钮。 | ||
| - | |||
| - | [/note] | ||
| - | |||
| - | ```javascript | ||
| - | function BindGameMenuButton( titleOrKey: string, info: string = null, callback: Action = null ) | ||
| - | ``` | ||
| - | |||
| - | 以下是一个示例。 | ||
| - | ```javascript | ||
| - | function OnScriptLoad() | ||
| - | { | ||
| - | //Custom Item | ||
| - | BindGameMenuButton(" | ||
| - | CreateHost(" | ||
| - | }); | ||
| - | BindGameMenuButton(" | ||
| - | ConnectHost(" | ||
| - | }); | ||
| - | | ||
| - | //Internal Item | ||
| - | BindGameMenuButton(" | ||
| - | BindGameMenuButton(" | ||
| - | } | ||
| - | ``` | ||
| - | |||
| - | |||
| - | |||
| - | ### UnbindAllGameMenuButton() | ||
| - | |||
| - | > 取消绑定所有主菜单界面按钮项目(包括引擎默认按钮)。 | ||
| - | > | ||
| - | > **注意:此方法会清空所有菜单按钮,如果希望重置为默认引擎按钮,应该手动执行一次`BindGameMenuButton(" | ||
| - | |||
| - | ```javascript | ||
| - | function UnbindAllGameMenuButton() | ||
| - | ``` | ||
| - | |||
| - | |||
| - | |||
| - | ### SetGameMenuBGEffect() | ||
| - | |||
| - | > 设置游戏菜单**世界背景效果**开关(通常为`Blur`效果),默认开启,**模组周期全局生效**。 | ||
| - | |||
| - | ```javascript | ||
| - | function SetGameMenuBGEffect( active: bool = true ) | ||
| - | ``` | ||
| - | |||
| - | |||
| - | |||
| - | ### SetGameMenuTitle() | ||
| - | |||
| - | > 设置游戏菜单**标题文本**,留空参数则使用默认名称(模组名称)。 | ||
| - | |||
| - | ```javascript | ||
| - | function SetGameMenuTitle( text: string = null ) | ||
| - | ``` | ||
| - | |||
| - | |||
| - | |||
| - | ### GetGameMenuTitle() | ||
| - | |||
| - | > 获取游戏菜单**标题文本**。 | ||
| - | |||
| - | ```javascript | ||
| - | function GetGameMenuTitle(): | ||
| - | ``` | ||
| - | |||
| - | |||
| - | |||
| - | ### SetGameMenuStyle() | ||
| - | |||
| - | > 设置游戏菜单**风格样式**,默认值为`0`。 | ||
| - | |||
| - | ```javascript | ||
| - | function SetGameMenuStyle( style: int ) | ||
| - | ``` | ||
| - | |||
| - | | Style | 样式 | ||
| - | | ------------- | ------------------------------------------------------------ | | ||
| - | | -1==(已过时)== | ||
| - | | **0(默认)** | **内置菜单风格,但使用`\GameMenu.png || \Cover.png`作为不透明底图** | | ||
| - | | 1 | 内置风格菜单,但不显示背景图片,直接显示世界相机视角 | ||
| - | |||
| - | |||
| - | |||
| - | ### GetGameMenuStyle() | ||
| - | |||
| - | > 获取游戏菜单**风格样式**。 | ||
| - | |||
| - | ```javascript | ||
| - | function GetGameMenuStyle(): | ||
| - | ``` | ||
| - | |||
| - | |||
| - | |||
| - | ### CreateNativeView() | ||
| - | |||
| - | > 打开一个引擎内置UI面板(如设置、服务器列表、MOD管理器等)。 | ||
| - | |||
| - | ```javascript | ||
| - | function OpenNativeView( int type, Action onDisable = null ) | ||
| - | ``` | ||
| - | |||
| - | | ID | 面板描述 | ||
| - | | ---- | ---------------------- | | ||
| - | | 0 | 开发者界面(关于界面) | | ||
| - | | 1 | 游戏设置 | ||
| - | | 2 | 多人游戏浏览器 | ||
| - | | 4 | ~~MOD模组管理~~ | ||
| - | |||
| - | *尽管有些ID没有被表格记录,但有可能仍然是有内容的,但未被记录的ID通常不具备通用性意义,在打开时将会被引擎阻断。* | ||
| - | |||
| - | |||
| - | |||
| - | ### ExistNativeView() | ||
| - | |||
| - | > 检查某个引擎内置UI界面是否存在(被打开)。 | ||
| - | |||
| - | ```javascript | ||
| - | function ExistNativeView( type: int ): bool | ||
| - | ``` | ||
| - | |||
| - | |||
| - | |||
| - | ### DestroyNativeView() | ||
| - | |||
| - | > 关闭一个引擎内置UI面板。 | ||
| - | |||
| - | ```javascript | ||
| - | function DestroyNativeView(type: | ||
| - | // | ||
| - | // | ||
| ``` | ``` | ||
| 行 348: | 行 198: | ||
| | 1 | [地图编辑器](reference/ | | 1 | [地图编辑器](reference/ | ||
| | 2 | [实验工坊](reference/ | | 2 | [实验工坊](reference/ | ||
| - | |||
| - | |||
| - | ### CreateNativeMenu() | ||
| - | |||
| - | > 为本地玩家建立一个`NativeMenu`菜单(等同于`WorldScript/ | ||
| - | > | ||
| - | > 更多内容请查看[NativeMenu菜单](scripting/ | ||
| - | |||
| - | ```javascript | ||
| - | function CreateNativeMenu( viewData: any ) | ||
| - | ``` | ||
| - | |||
| - | |||
| - | |||
| - | ### DestroyNativeMenu() | ||
| - | |||
| - | > 为本地玩家关闭`NativeMenu`菜单。 | ||
| - | |||
| - | ```javascript | ||
| - | function DestroyNativeMenu() | ||
| - | ``` | ||
| - | |||
| - | |||
| - | |||
| - | ### SetNativeMenuText() | ||
| - | |||
| - | > 为本地玩家设置菜单中某项的文本。 | ||
| - | |||
| - | ```javascript | ||
| - | function SetNativeMenuText( index: int, text: string ) //index: (-1 > 标题, -2 > 子标题, 0+ > 索引Item) | ||
| - | function SetNativeMenuText( tag: string, text: string ) // | ||
| - | ``` | ||
| - | |||
| - | |||
| - | |||
| - | ### GetCurrentNativeMenuTag() | ||
| - | |||
| - | > 获取当前正在显示的`NativeMenu`菜单Tag(获取自`viewData.Tag`),默认为空文本。 | ||
| - | > | ||
| - | > 此方法可用于区分多个菜单实例,以当前正在显示的为准。 | ||
| - | |||
| - | ```javascript | ||
| - | function GetCurrentNativeMenuTag(): | ||
| - | ``` | ||
| - | |||
| - | |||
| - | |||
| - | ### CreateRadialMenu() | ||
| - | |||
| - | > 为本地玩家建立一个`RadialMenu`轮盘菜单(等同于`WorldScript/ | ||
| - | > | ||
| - | > 更多内容请查看[RadialMenu菜单](developer/ | ||
| - | |||
| - | ```javascript | ||
| - | function CreateRadialMenu( viewData: any ) | ||
| - | ``` | ||
| - | |||
| - | |||
| - | |||
| - | ### DestroyRadialMenu() | ||
| - | |||
| - | > 为本地玩家关闭`RadialMenu`轮盘菜单。 | ||
| - | |||
| - | ```javascript | ||
| - | function DestroyRadialMenu() | ||
| - | ``` | ||
| - | |||
| - | |||
| - | |||
| - | ### GetCurrentRadialMenuTag() | ||
| - | |||
| - | > 获取当前正在显示的`RadialMenu`轮盘菜单Tag(获取自`viewData.Tag`),默认为空文本。 | ||
| - | > | ||
| - | > 此方法可用于区分多个菜单实例,以当前正在显示的为准。 | ||
| - | |||
| - | ```javascript | ||
| - | function GetCurrentRadialMenuTag(): | ||
| - | ``` | ||
| 行 457: | 行 229: | ||
| - | ### SetChatEnabled() | + | ### SetOutlineColor() |
| - | > 设置游戏聊天框启用开关,当聊天框被禁止后,玩家将无法显示或开启聊天框。 | + | > 设置游戏内描边相关的**全局颜色**(共计3个索引`0~2`,全局共享颜色)。 |
| > | > | ||
| - | > *此功能主要用于主菜单界面,此时通常不希望玩家使用“聊天”功能,在`Main`场景中是默认被禁止的。* | + | > **注意:如果索引为`-1`可设置表面填充颜色(FillColor)。** |
| ```javascript | ```javascript | ||
| - | function | + | function |
| - | ``` | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | ### GetChatEnabled() | + | |
| - | + | ||
| - | > 获取游戏聊天框开关。 | + | |
| - | + | ||
| - | ```javascript | + | |
| - | function GetChatEnabled(): bool | + | |
| - | ``` | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | ### SetChatPanelPivot() | + | |
| - | + | ||
| - | > 设置游戏聊天框锚点位置(强制),默认值为`-1`(遵循游戏默认设置),通过此方法设定位置后,即使玩家在游戏选项设置了锚点位置,也会优先使用当前方法所设置的位置。 | + | |
| - | > | + | |
| - | > *此功能适用于部分U丰富的模组,可能不希望聊天框占用模组UI位置(例如血条、状态条、信息面板等),可以使用此方法强制设定聊天框位置。* | + | |
| - | + | ||
| - | ```javascript | + | |
| - | function SetChatPanelPivot( pivot: int = -1 ) | + | |
| - | ``` | + | |
| - | ```javascript | + | |
| - | SetChatPanelPivot(-1); | + | |
| - | SetChatPanelPivot(0); | + | |
| - | SetChatPanelPivot(1); | + | |
| - | SetChatPanelPivot(2); //Change pivot to Left_Bottom | + | |
| ``` | ``` | ||
| 行 577: | 行 321: | ||
| | 10 | 噪声覆盖、淡出 | | 10 | 噪声覆盖、淡出 | ||
| | 11 | 液体覆盖、淡出 | | 11 | 液体覆盖、淡出 | ||
| - | |||
| - | |||
| 行 780: | 行 522: | ||
| ```javascript | ```javascript | ||
| function GetGameOption( keyTag: string, defaultValue: | function GetGameOption( keyTag: string, defaultValue: | ||
| - | ``` | ||
| - | |||
| - | |||
| - | |||
| - | ### ReadFile() | ||
| - | |||
| - | > 从模组空间目录(`Mod/ | ||
| - | |||
| - | ```javascript | ||
| - | function ReadFile( fileName: string ): string | ||
| - | ``` | ||
| - | |||
| - | ```javascript | ||
| - | ReadFile( " | ||
| ``` | ``` | ||
| 行 800: | 行 528: | ||
| ### GetModArchive() | ### GetModArchive() | ||
| + | > **此方法已在V0.83移除。** | ||
| + | > | ||
| > 尝试读取**指定模组**的持久化存储数据,如不存在则返回空文本。 | > 尝试读取**指定模组**的持久化存储数据,如不存在则返回空文本。 | ||
| > | > | ||
| 行 806: | 行 536: | ||
| ```javascript | ```javascript | ||
| function GetModArchive( package: string = null ): string | function GetModArchive( package: string = null ): string | ||
| - | ``` | ||
| - | |||
| - | |||
| - | |||
| - | ### GetPropSourceData() | ||
| - | |||
| - | > 获取**指定游戏道具**最新默认原始数据,如果未被`SetPropSourceData`重写过,则返回引擎原始数据。 | ||
| - | |||
| - | ```javascript | ||
| - | function GetPropSourceData( prop: int, keyPath: string ): any | ||
| ``` | ``` | ||
| 行 853: | 行 573: | ||
| ### BindActionKey() | ### BindActionKey() | ||
| - | > 绑定(更新)**行为触发按键**(游戏右下角按钮)。 | + | > 绑定(更新)**行为触发按键**(类似触发`KEY: |
| > | > | ||
| > **注意:同一个`keyTag`同时只会存在一个。** | > **注意:同一个`keyTag`同时只会存在一个。** | ||
| 行 906: | 行 626: | ||
| function UnbindAllActionKey() | function UnbindAllActionKey() | ||
| ``` | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### GenerateMapSnapshot() | ||
| + | |||
| + | > 生成游戏地图(大地图+小地图雷达)快照。 | ||
| + | > | ||
| + | > 世界加载时默认会**自动生成**,如果世界布局**动态改动**过大,或者希望修改**渲染风格**时,可以手动执行一次方法。 | ||
| + | > | ||
| + | > 注意:此方法会根据**地图尺寸**进行动态生成(地图越大,生成越慢),可能引起短暂卡顿。 | ||
| + | > | ||
| + | > 补充:此方法允许设置`_Config.json`配置文件,以在地图加载时提前生成,避免额外的开销。 | ||
| + | |||
| + | ```javascript | ||
| + | function GenerateMapSnapshot( style: int = 0, worldTime: int = 10 ) | ||
| + | ``` | ||
| + | |||
| + | - `style`渲染风格(0=默认;1=描边;2=油画;3=灰质;4=黑白描边;5=霓虹描边) | ||
| + | - `worldTime`世界时间(生成快照时的亮度) | ||
| + | |||
| + | |||
| + | |||
| + | ### SetFocusEntityDistance() | ||
| + | |||
| + | > 设置本地玩家**焦点检测距离**(与`World`作用相同)。 | ||
| + | |||
| + | ```javascript | ||
| + | function SetFocusEntityDistance( value: float ) | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### GetFocusEntityDistance() | ||
| + | |||
| + | > 获取本地玩家**焦点检测距离**。 | ||
| + | |||
| + | ```javascript | ||
| + | function GetFocusEntityDistance(): | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||