API运行环境
Lua脚本需要区分为服务端代码与客户端代码,分别对服务端逻辑与客户端逻辑进行控制,客户端-服务器代码分别写在GameServer.lua与GameClient.lua中。客户端代码负责处理用户输入向服务端发送请求,比如界面的逻辑;服务端代码负责处理客户端请求,比如存储玩家数据。
API有三种运行环境,第一种是纯客户端运行,第二种是纯服务端运行,第三种是在客户端和服务端运行。
可以在开发者文档中查看该API的运行范围。开发者文档链接:元件脚本 API文档 | 元梦之星
纯服务端运行
纯服务端运行的API只能在服务端运行,用于处理与服务器相关的逻辑和数据操作。这些API通常不涉及客户端渲染或用户交互,而是专注于业务逻辑、数据存储和网络通信。
使用场景:
- 游戏逻辑处理:如伤害计算、物品掉落、任务完成判定。
- 数据存储与查询:如玩家存档、排行榜数据、游戏配置。
- 网络通信:如处理客户端请求、广播消息给所有客户端。
纯客户端运行
纯客户端运行的API只能在客户端运行,用于处理与用户界面、输入和渲染相关的操作。这些API通常不涉及服务器逻辑,而是专注于本地数据处理和用户交互。
使用场景:
- 用户界面渲染:如显示游戏画面、更新血条、播放音效。
- 输入处理:如接收玩家按键、鼠标点击、触摸操作。
在服务端和客户端运行
在服务端和客户端运行的API可以在客户端调用也可在服务端调用,比如获取玩家数据。
部分在服务端和客户端上使用的API,因其操作对象三端同步,最终效果会以服务端为准。
以下为这类API列表:
| 类 | API | 描述 |
|---|---|---|
| Character | SetPosition | 设置角色的位置 |
| Character | SetToward | 设置角色的朝向,相当于指定方向向量 |
| Character | SetRotation | 设置角色的旋转角度 |
| Character | SetScale | 设置角色的模型大小 |
| Character | ChangeAttribute | 设置角色的角色属性值。支持设置:移动速度,跳跃速度或重力系数属性 |
| Character | SetAttributeEnabled | 设置角色属性是否启用,支持设置:输入,移动,跳跃,抓取,被抓取,拾取道具,使用道具,物理模拟,可见性 |
| Character | AddImpulse | 给角色添加向某个方向的力 |
| Character | SetTrackTargetMove | 让角色追踪某个元件/角色/生物,并设置其速度等。可用于制作角色追击指定玩家 |
| Character | StopTracking | 让角色停止追踪运动 |
| Character | Move | 让角色朝指定方向移动,并设置其速度与时间 |
| Character | MoveToPosition | 让角色朝目标点位置移动 |
| Character | StopMove | 让角色停止移动 |
如果元件创建在服务端,则下列API以服务端为准:
| 类 | API | 描述 |
|---|---|---|
| Element | Destroy | 销毁元件 |
| Element | DestroyByTime | 在指定时间后,销毁指定元件实例 |
| Element | SetPosition | 设置并改变元件位置 |
| Element | SetToward | 设置并改变元件朝向 |
| Element | SetScale | 设置并改变元件的缩放 |
| Element | SetRotation | 设置并改变元件的旋转方向 |
| Element | SetRotationQuaternion | 使用四元数设置元件的旋转 |
| Element | SetEnableCollision | 设置并改变元件的是否可碰撞属性 |
| Element | SetPhysics | 设置元件物理属性是否开启。若需要开启抓举,需要先开启受外力作用。若需要关闭抓举,需要先将受外力作用关闭 |
| Element | SetVisibility | 设置并改变元件的是否可见属性 |
| Element | EnableAllMotionUnit | 启用/禁用目标元件的所有运动单元,无视启动条件 |
| Element | EnableMotionUnitByIndex | 启用/禁用目标元件的指定编号运动单元,无视启动条件 |
| Element | AddForce | 对具备物理特性的指定元件添加对应向量的力 |
| Element | BindingToElement | 将目标元件附加到指定父元件上 |
| Element | BindingToCharacterOrNPC | 将目标元件附加到指定父角色上 |
| Element | UnBinding | 解除元件的附加逻辑 |
| Element | TrackTarget | 让指定元件实例追踪目标实例,元件可以做加速运动且保持一个指定的相对距离 |
| Element | StopTracking | 让指定元件实例停止追踪运动 |
| Element | LinearMotion | 让元件直线移动。注意:只支持运动表演,运动期间元件无碰撞 |
| Element | CircularMotion | 让元件圆周运动。注意:只支持运动表演,运动期间元件无碰撞 |
| Element | ParabolicMotion | 让元件抛物线运动。注意:只支持运动表演,运动期间元件无碰撞 |
| Element | MoveTo | 设置元件位置,使元件按指定方式移动到该位置 |
| Element | RotateTo | 设置元件旋转,使元件按指定方式旋转到该位置 |
| Element | ScaleTo | 设置元件缩放,使元件按指定方式缩放到该大小 |