Skip to content
V0.23.0.0 Release Note

V0.23.0.0 Release Note

注意事项

  1. 由于「getPlayerID」接口弃用,但「Gameplay.getPlayer」无法传入「getUserId」,该问题会在024修复,修复期间可使用原方案过度。

新增功能

[新增]运动器重置接口moverReset()

运动器

TypeScript
/**
运动器重置接口moverReset()可以将正在运行的运动器重置回初始状态,并可以通过执行回调重新设置运动器参数
*/
let moverOG = this.gameObject as Gameplay.IntegratedMover;  // 指向场景中的运动器
moverOG1.enable = true;  //启用运动器
setTimeout(() => {
    //5秒后将运动器重置,并关闭运动器
    moverOG.moverReset(()=>{
    moverOG.enable = false;
    });
}, 5000);
/**
运动器重置接口moverReset()可以将正在运行的运动器重置回初始状态,并可以通过执行回调重新设置运动器参数
*/
let moverOG = this.gameObject as Gameplay.IntegratedMover;  // 指向场景中的运动器
moverOG1.enable = true;  //启用运动器
setTimeout(() => {
    //5秒后将运动器重置,并关闭运动器
    moverOG.moverReset(()=>{
    moverOG.enable = false;
    });
}, 5000);

[UI编辑器]文本/输入框组件新增属性-富文本

  • 示例:
023-2023-3

[新增]工程增加版本信息

  • 当开发者进行editor升级后,如原项目打开新版editor出现问题,此时会有弹窗带有打开Release Notes的链接,帮助用户快速进入Release Notes找到对应解决方案

023-3-1

[优化]游戏状态刷新机制优化

  • 解决用户频繁发版游戏时状态不能马上更新的问题
    • 缩短状态刷新时间,由5分钟修改为30s一次
    • 窗口由模态修改为非模态,否则将阻塞主线程导致界面开启时无法刷新
    • 界面新增刷新按钮,点击刷新按钮后执行刷新操作
    • 023-4

[新增]共享存储数据

用法请详见产品手册:共享数据

[优化]角色数据导入时清空对应部位的数据

优化前,在角色编辑器导入角色文件时,不会清除当前角色上的已有数据。

举例说明:角色身高为2,导入一个角色文件,该文件中仅记录了头部大小,所以在导入该文件时,仅会修改当前角色的头部大小,不会还原身高,导致该角色的身高仍然是2,没有恢复初始值。

衍生问题:该逻辑会导致在导入不同的完整角色时出现数据堆叠的情况,如导入文件1再导入文件2,会导致导入文件2时,角色上还保留文件1的数据。

优化后,在角色编辑器导入角色文件时,会根据角色文件保存时的部位分类,在导入时分别恢复初始值后再导入文件中的数据。

023-5

[新增]编辑器新增PING和FPS区域显隐开关,单机模式展示FPS。

  • 编辑器

单机模式下,在编辑器主视口展示FPS占位区域,并在显示隐藏设置中新增主视口占位区域的显隐开关

023-6023-7
  • 客户端

单机游戏,在屏幕右上方动态展示FPS。

023-8

[优化]RPC参数类型优化

详情参考Replicated使用规范

[新增]Player新增API

TypeScript
/**
* @description 获取用户的平台Id,该Id可以作为玩家唯一Id使用。
* @effect 调用端生效
* @returns 用户平台Id
*/
getUserId(): string;
/**
* @description 获取用户的平台Id,该Id可以作为玩家唯一Id使用。
* @effect 调用端生效
* @returns 用户平台Id
*/
getUserId(): string;

[废弃]Player废弃以下接口

TypeScript
/**
* @description 获取当前游戏内的玩家Id,用于和其它玩家区分。不能用于查询用户信息。
* @deprecated since:023 reason:功能废弃 replacement:getUserId
* @effect 调用端生效
* @returns 当前游戏内的玩家Id
*/
getPlayerID(): number;
/**
* @description 获取用户系统的玩家Id
* @deprecated since:023 reason:命名不规范 replacement:AccountService.getInstance().getOpenId()
* @effect 调用端生效
* @returns 用户系统的玩家Id,可以用于查询用户信息。
*/
getUserSystemId(): string;
/**
* @description 获取玩家账户
* @effect 只在客户端调用生效
* @deprecated since:023 reason:功能废弃 replacement:getUserId
* @returns 玩家账户
*/
getAccount(): string;
/**
* @description 获取当前游戏内的玩家Id,用于和其它玩家区分。不能用于查询用户信息。
* @deprecated since:023 reason:功能废弃 replacement:getUserId
* @effect 调用端生效
* @returns 当前游戏内的玩家Id
*/
getPlayerID(): number;
/**
* @description 获取用户系统的玩家Id
* @deprecated since:023 reason:命名不规范 replacement:AccountService.getInstance().getOpenId()
* @effect 调用端生效
* @returns 用户系统的玩家Id,可以用于查询用户信息。
*/
getUserSystemId(): string;
/**
* @description 获取玩家账户
* @effect 只在客户端调用生效
* @deprecated since:023 reason:功能废弃 replacement:getUserId
* @returns 玩家账户
*/
getAccount(): string;

[新增]检测类API屏蔽特定对象

当前检测类API无法针对对象进行检测屏蔽,导致实际开发过程中需要遍历检测结果进行判定导致性能表现差,开发不便等后果。因此决定在该类API中添加屏蔽对象参数使开发者可以按需获取检测结果。

函数名:Gameplay.lineTrace

功能:射线检测添加参数:

  1. 屏蔽对象数组
  2. 屏蔽模式

功能详细说明

/**
* @param StartLocation usage:起始位置
* @param EndLocation usage:结束位置
* @param multiTrace usage:是否穿透检测 default:true
* @param debug usage:是否可视化绘制 default:true
* @param IgnoreObjectsGuid usage:屏蔽对象guid数组 default:[]
* @param IgnoreByKind usage:是否根据屏蔽对象guid数组中的屏蔽对象类别进行屏蔽,例如屏蔽对象guid数组中存在一个触发器A,那么如果本参数为false,只屏蔽触发器A,如果本参数为true,会屏蔽场景中所有触发器 default:false
* @param Source usage:检测源是发起本次检测的对象,不参与本次检测(例如发起客户端的角色对象) default:null
* @returns HitResult数组
* @effect 调用端生效
*/
function lineTrace(
  StartLocation: Type.Vector, 
  EndLocation: Type.Vector, 
  multiTrace: boolean = true, 
  debug: boolean = true,
  IgnoreObjectsGuid: Array<string>  = [],
  IgnoreByKind: boolean = false,
  Source: Core.GameObject = null
): Array<HitResult>;
/**
* @param StartLocation usage:起始位置
* @param EndLocation usage:结束位置
* @param multiTrace usage:是否穿透检测 default:true
* @param debug usage:是否可视化绘制 default:true
* @param IgnoreObjectsGuid usage:屏蔽对象guid数组 default:[]
* @param IgnoreByKind usage:是否根据屏蔽对象guid数组中的屏蔽对象类别进行屏蔽,例如屏蔽对象guid数组中存在一个触发器A,那么如果本参数为false,只屏蔽触发器A,如果本参数为true,会屏蔽场景中所有触发器 default:false
* @param Source usage:检测源是发起本次检测的对象,不参与本次检测(例如发起客户端的角色对象) default:null
* @returns HitResult数组
* @effect 调用端生效
*/
function lineTrace(
  StartLocation: Type.Vector, 
  EndLocation: Type.Vector, 
  multiTrace: boolean = true, 
  debug: boolean = true,
  IgnoreObjectsGuid: Array<string>  = [],
  IgnoreByKind: boolean = false,
  Source: Core.GameObject = null
): Array<HitResult>;

函数名:Gameplay.parabolicTrace该接口本身有问题,参数暴露不足导致应用场景受限,新版本次暂未上线。

功能:抛物线检测添加参数:

  1. 屏蔽对象数组

功能详细说明

/**
     * @effect 调用端生效
     * @param StartLocation usage:起始位置
     * @param Direction usage:投掷方向
     * @param InitSpeed usage:初始速度
     * @param Range usage:距离
     * @param CapsuleRadius usage:胶囊半径
     * @param IgnoreObjectTypes usage:忽略Object类型
     * @param debug usage:是否可视化绘制 default:true
     * @param IgnoreObjectsGuid usage:屏蔽对象guid数组 default:[]
     * @param Source usage:检测源是发起本次检测的对象,不参与本次检测(例如发起客户端的角色对象) default:null
     * @returns HitResult
     */
function parabolicTrace(
  StartLocation: Type.Vector, 
  Direction: Type.Vector, 
  InitSpeed: number, 
  Range: number, 
  CapsuleRadius: number, 
  IgnoreObjectTypes: Array<ObjectTypeQuery>, 
  debug = true,        
  IgnoreObjectsGuid: Array<string> = [], 
  Source: Core.GameObject = null
): HitResult
/**
     * @effect 调用端生效
     * @param StartLocation usage:起始位置
     * @param Direction usage:投掷方向
     * @param InitSpeed usage:初始速度
     * @param Range usage:距离
     * @param CapsuleRadius usage:胶囊半径
     * @param IgnoreObjectTypes usage:忽略Object类型
     * @param debug usage:是否可视化绘制 default:true
     * @param IgnoreObjectsGuid usage:屏蔽对象guid数组 default:[]
     * @param Source usage:检测源是发起本次检测的对象,不参与本次检测(例如发起客户端的角色对象) default:null
     * @returns HitResult
     */
function parabolicTrace(
  StartLocation: Type.Vector, 
  Direction: Type.Vector, 
  InitSpeed: number, 
  Range: number, 
  CapsuleRadius: number, 
  IgnoreObjectTypes: Array<ObjectTypeQuery>, 
  debug = true,        
  IgnoreObjectsGuid: Array<string> = [], 
  Source: Core.GameObject = null
): HitResult

函数名:Gameplay.cylinderOverlap

功能:圆柱检测添加参数:

  1. 屏蔽对象数组
  2. 屏蔽模式

功能详细说明

 /**
     * @author baoqiang.han
     * @description 圆柱范围检测
     * @groups GAMEPLAY
     * @effect 调用端生效
     * @param StartLocation usage:起始位置
     * @param Radius usage:检测半径
     * @param Height usage:检测高度
     * @param debug usage:是否可视化绘制 default:true
     * @param IgnoreObjectsGuid usage:屏蔽对象guid数组 default:[]
     * @param IgnoreByKind usage:是否根据屏蔽对象guid数组中的屏蔽对象类别进行屏蔽,例如屏蔽对象guid数组中存在一个触发器A,那么如果本参数为false,只屏蔽触发器A,如果本参数为true,会屏蔽场景中所有触发器 default:false
     * @param Source usage:检测源是发起本次检测的对象,不参与本次检测(例如发起客户端的角色对象) default:null
     * @r
function cylinderOverlap(
  StartLocation: Type.Vector, 
  Radius: number, 
  Height: number, 
  debug: boolean,
  IgnoreObjectsGuid: Array<string> = [], 
  IgnoreByKind = false, 
  Source: Core.GameObject = null
): Array<Core.GameObject>
 /**
     * @author baoqiang.han
     * @description 圆柱范围检测
     * @groups GAMEPLAY
     * @effect 调用端生效
     * @param StartLocation usage:起始位置
     * @param Radius usage:检测半径
     * @param Height usage:检测高度
     * @param debug usage:是否可视化绘制 default:true
     * @param IgnoreObjectsGuid usage:屏蔽对象guid数组 default:[]
     * @param IgnoreByKind usage:是否根据屏蔽对象guid数组中的屏蔽对象类别进行屏蔽,例如屏蔽对象guid数组中存在一个触发器A,那么如果本参数为false,只屏蔽触发器A,如果本参数为true,会屏蔽场景中所有触发器 default:false
     * @param Source usage:检测源是发起本次检测的对象,不参与本次检测(例如发起客户端的角色对象) default:null
     * @r
function cylinderOverlap(
  StartLocation: Type.Vector, 
  Radius: number, 
  Height: number, 
  debug: boolean,
  IgnoreObjectsGuid: Array<string> = [], 
  IgnoreByKind = false, 
  Source: Core.GameObject = null
): Array<Core.GameObject>

函数名:Gameplay.sphereOverlap

功能:球形检测添加参数:

  1. 屏蔽对象数组
  2. 屏蔽模式

功能详细说明

 /**
     * @author baoqiang.han
     * @groups GAMEPLAY
     * @description 球形范围检测
     * @effect 调用端生效
     * @param StartLocation usage:起始位置
     * @param Radius usage:检测半径
     * @param debug usage:是否可视化绘制 default:true
     * @param IgnoreObjectsGuid usage:屏蔽对象guid数组 default:[]
     * @param IgnoreByKind usage:是否根据屏蔽对象guid数组中的屏蔽对象类别进行屏蔽,例如屏蔽对象guid数组中存在一个触发器A,那么如果本参数为false,只屏蔽触发器A,如果本参数为true,会屏蔽场景中所有触发器 default:false
     * @param Source usage:检测源是发起本次检测的对象,不参与本次检测(例如发起客户端的角色对象) default:null
     * @returns GameObject数组
     */
function sphereOverlap(
  StartLocation: Type.Vector, 
  Radius: number, debug: boolean,        
  IgnoreObjectsGuid: Array<string> = [], 
  IgnoreByKind = false, 
  Source: Core.GameObject = null
): Array<Core.GameObject>
 /**
     * @author baoqiang.han
     * @groups GAMEPLAY
     * @description 球形范围检测
     * @effect 调用端生效
     * @param StartLocation usage:起始位置
     * @param Radius usage:检测半径
     * @param debug usage:是否可视化绘制 default:true
     * @param IgnoreObjectsGuid usage:屏蔽对象guid数组 default:[]
     * @param IgnoreByKind usage:是否根据屏蔽对象guid数组中的屏蔽对象类别进行屏蔽,例如屏蔽对象guid数组中存在一个触发器A,那么如果本参数为false,只屏蔽触发器A,如果本参数为true,会屏蔽场景中所有触发器 default:false
     * @param Source usage:检测源是发起本次检测的对象,不参与本次检测(例如发起客户端的角色对象) default:null
     * @returns GameObject数组
     */
function sphereOverlap(
  StartLocation: Type.Vector, 
  Radius: number, debug: boolean,        
  IgnoreObjectsGuid: Array<string> = [], 
  IgnoreByKind = false, 
  Source: Core.GameObject = null
): Array<Core.GameObject>

函数名:Gameplay.boxOverlapInLevel

功能:矩形检测添加参数:

  1. 屏蔽对象数组
  2. 屏蔽模式

功能详细说明

 /**
     * @author baoqiang.han
     * @groups GAMEPLAY
     * @description 矩形范围检测
     * @effect 调用端生效
     * @param StartLocation usage:起始位置
     * @param EndLocation usage:结束位置
     * @param Width usage:检测宽度
     * @param Height usage:检测高度
     * @param debug usage:是否可视化绘制 default:true
     * @param IgnoreObjectsGuid usage:屏蔽对象guid数组 default:[]
     * @param IgnoreByKind usage:是否根据屏蔽对象guid数组中的屏蔽对象类别进行屏蔽,例如屏蔽对象guid数组中存在一个触发器A,那么如果本参数为false,只屏蔽触发器A,如果本参数为true,会屏蔽场景中所有触发器 default:false
     * @param Source usage:检测源是发起本次检测的对象,不参与本次检测(例如发起客户端的角色对象) default:null
     * @returns GameObject数组
    */
function boxOverlap(
  StartLocation: Type.Vector, 
  EndLocation: Type.Vector, 
  Width: number, 
  Height: number, 
  debug: boolean,
  IgnoreObjectsGuid: Array<string> = [], 
  IgnoreByKind = false, 
  Source: Core.GameObject = null
): Array<Core.GameObject>
 /**
     * @author baoqiang.han
     * @groups GAMEPLAY
     * @description 矩形范围检测
     * @effect 调用端生效
     * @param StartLocation usage:起始位置
     * @param EndLocation usage:结束位置
     * @param Width usage:检测宽度
     * @param Height usage:检测高度
     * @param debug usage:是否可视化绘制 default:true
     * @param IgnoreObjectsGuid usage:屏蔽对象guid数组 default:[]
     * @param IgnoreByKind usage:是否根据屏蔽对象guid数组中的屏蔽对象类别进行屏蔽,例如屏蔽对象guid数组中存在一个触发器A,那么如果本参数为false,只屏蔽触发器A,如果本参数为true,会屏蔽场景中所有触发器 default:false
     * @param Source usage:检测源是发起本次检测的对象,不参与本次检测(例如发起客户端的角色对象) default:null
     * @returns GameObject数组
    */
function boxOverlap(
  StartLocation: Type.Vector, 
  EndLocation: Type.Vector, 
  Width: number, 
  Height: number, 
  debug: boolean,
  IgnoreObjectsGuid: Array<string> = [], 
  IgnoreByKind = false, 
  Source: Core.GameObject = null
): Array<Core.GameObject>