[开发者心得] 11月份编辑器踩坑分享

[复制链接]
856 |6
回帖奖励 105 口袋币      回复本帖可获得 15 口袋币奖励! 每人限 3 次(中奖概率 50%)
复读机读复读机 发表于 2023-11-28 17:35:17 | 显示全部楼层 |阅读模式

本帖最后由 复读机读复读机 于 2023-12-5 10:58 编辑

本帖最后由 复读机读复读机 于 2023-11-28 18:41 编辑

又到了踩坑分享时间,这个月我们都发现了哪些需要注意的地方呢

以下内容适配0.27.0.0版本口袋方舟编辑器,后续将会持续优化编辑器易用性

1. 在对象管理器中复制添加了脚本的预制体,会导致复制的预制体脚本的自定义属性丢失

<video controls src="https://arkimg.ark.online/trapTips2023111.mp4"></video>

解决方法:需要添加场景中的预制体时,从工程内容-预制体中将预制体拖拽加入场景


2. 获取摄像机FOV值接口异常

在世界对象Camera中设置FOV之后运行游戏。实际运行的摄像机表现是正确的,但是此时获取当前摄像机的FOV始终为90。

如果在摄像机切换时缓存了当前的摄像机参数,再切换回来后,摄像机表现会出错。

例如以下代码情况:

//例如在编辑器内默认设置fov为60

setCamera(){
    // 实际获取到的fov为90,并缓存下来了
    this._cameraData = ModifiedCameraSystem.getCurrentSettings();
    ModifiedCameraSystem.setCameraFollowTarget(this.modelNpc);
    Camera.currentCamera.fov = 120;
    cameraSys.springArm.length = 1000;
}

resetCamera(){
    ModifiedCameraSystem.cancelCameraFollowTarget();
    // 应用了缓存的相机数据,fov设置为90,而非默认的60
    ModifiedCameraSystem.applySettings(this._cameraData);
}

<video controls src="https://arkimg.ark.online/traptips2023112.mp4"></video>

解决方法:通过自己配置来设置不同表现时的Camera参数,避免缓存值出现错误,导致恢复参数出错。


3. 修改摄像机跟随对象需要等三次ready,否则可能会出现设置不成功的情况

const player = await Player.asyncGetLocalPlayer();
await player.character.asyncReady();
await this.gameObject.asyncReay();
await Camera.currentCamera.asyncReady();
Camera.currentCamera.parent = this.gameObject

4. TouchInputUtil.getInstance()的事件会因为其他玩家的退出而清除

img

解决方法:目前可以用new TouchInput()创建一个touch事件自己维护


5. RPC过多可能导致角色位置不同步

解决方法:模块管理(Odin)中没有返回值的net_ 函数可以加上 @Decorator.noReply() 注解以减少RPC,例如:

@Decorator.noReply()
public net_test(){
        // 函数内逻辑
}

6. 027上动态寻路功能由于性能问题暂时关闭,预计028版本重新开启

<video controls src="https://arkimg.ark.online/trapTips2023113.mp4"></video>

解决方法:暂时关闭动态寻路


7. 进入触发器缩小玩家胶囊体,离开触发器放大玩家胶囊体,可能会无限触发递归,导致死循环

想要实现一个穿越缝隙的功能,在进入缝隙触发器时会缩小玩家胶囊体,实现穿越。

trapTips2023114

解决方法:通过两个触发器来实现。较大的触发器绑定leave事件,较小的触发器绑定enter事件。


8. player偶现没有character,导致player.character.asyncReady()报错

线上027偶尔报错unhandledRejection,TypeError: Cannot read property 'asyncReady' of undefined,可能是由于player的character丢失导致


9. 属性同步复杂类型对象后,客户端接收的数据不是原类型

使用自定义类型作为属性同步对象, 属性同步后的数据是个Object,而不是对应类型的对象


10. 在服务端传送玩家,有时候传送没反应

由于027的权威端做了修改,如果在客户端还未准备好的情况下修改该客户端角色的位置会导致失效

解决方法:等待客户端准备好之后再传送,或者直接将传送写在客户端,027后客户端修改位置也能生效。


本次踩坑分享到这就结束啦,如果你也发现了口袋方舟编辑器的不便点||坑点,欢迎在评论区留言,有机会获得论坛口袋币哦❤️

回复

使用道具 举报

汽汽汽汽水 发表于 2023-11-28 17:37:36 | 显示全部楼层
踩坑分享好啊
回复

使用道具 举报

复读机读复读机楼主 发表于 2023-11-28 17:38:46 | 显示全部楼层
速速来抽口袋币
回复

使用道具 举报

苍苍 发表于 2023-11-28 17:48:29 | 显示全部楼层

回帖奖励 +15 口袋币

哇卡哇卡 库你急哇
回复

使用道具 举报

阳光总在风雨後 发表于 2024-1-25 16:48:45 | 显示全部楼层

回帖奖励 +15 口袋币

速速来抽口袋币
回复

使用道具 举报

躲猫猫作者_思想的鱼 发表于 2024-1-26 10:48:45 | 显示全部楼层

回帖奖励 +15 口袋币

028 移动父节点,子节点不会跟着走呐。(父节点-空锚点;子节点-特效、触发器)
回复

使用道具 举报

复读机读复读机楼主 发表于 2024-1-26 13:49:33 | 显示全部楼层
躲猫猫作者_思想的鱼 发表于 2024-1-26 10:48
028 移动父节点,子节点不会跟着走呐。(父节点-空锚点;子节点-特效、触发器) ...

收到,最新的编辑器已经做了修复
回复

使用道具 举报

热门版块
快速回复 返回顶部 返回列表