Cocos Creator 3.8.4 社区公测帖 - 2024.9.30

不好意思,我弄错了。你要的是 character controller 的事件。我又试了下,可以收到你说的 exit 消息,stay 消息我没去试。目前的实现确实存在问题,它们公用了数据结构。这个问题在 3.8.4 不会解决,得等下个版本解决了。

:rofl:我刚才一直在看角色控制器的文档和API,整得我有点蒙了,现在只能临时解决了,办法是监听Stay,然后加一个flag标志,只在第一次Stay触发时有效,当做是Enter触发

这个问题麻烦看一下吧。。。
@dumganhar

可以参考这个解决方案:onControllerTriggerEnter can not be triggered · Issue #17615 · cocos/cocos-engine · GitHub

mask.on( NodeEventType.TOUCH_START , (event:EventTouch)=>
        {
            const pos = event.getLocation()
            // 先加上 event.windowId 参数绕过这个问题吧。
            const hit = icon.getComponent(UITransform).hitTest( pos, event.windowId )
            if( hit )
            {
                log("点中了")
            }


@minggo uiRenderManager的问题还在,重新改下吧

正常构建和只构建Bundle同一个项目出来的结果不一样,正常构建的项目优先级低的bundle中不会再注册同一个类型,但是选项为只构建Bundle的时候优先级低的bundle会把使用到优先级高Bundle中使用的脚本再注册一次,这样在热更单独bundle时候classid会不一致,获取组件也会有问题,这个有计划处理吗?还是我的使用方法有问题?能否保持让只构建Bundle和正常构建的结果保持一致呢?下图是只构建Bundle出来的结果,ModuleSubsystem.ts脚本在main中被注册了,而后又在hall这个bundle中又注册了一次

在屏幕设置为超清模式下,帧率会降低很多,高清模式60帧,超清模式只能30帧甚至更低。@minggo

这样会影响到帧率?在安卓原生测试时,present耗时40+ms,在web上耗时不到1ms,有点疑惑

因为 web 和小游戏平台上,真实的 present 行为是浏览器或小游戏自己处理的,引擎里面封装的 gfx.Device.preset 只是复位一些状态,实际上并没有做 present 的行为,平台也没有暴露 present 的方法,所以基本不耗时。而原生上是有 swapBuffer (内部会等待 GPU 执行完成和垂直同步)。
所以左下角调试信息中,在 web 平台上 present 的数值是无意义的。

    public present (): void {
        const queue = (this._queue as WebGLQueue);
        this._numDrawCalls = queue.numDrawCalls;
        this._numInstances = queue.numInstances;
        this._numTris = queue.numTris;
        queue.clear();
    }
1赞

那在项目中渲染数据比较少(不能删减),present耗时比较高时,有什么优化方案么?

原生平台上,present 耗时高,很大概率是因为 GPU 渲染压力大,这个还需要具体情况具体分析,可以用 snapdragon、renderdoc 等抓帧工具,排查一下每帧的 Graphic API 的调用情况,snapdragon 还能够更细化的分析具体的瓶颈点在哪里。

引擎组是否能考虑, 就是当有多个摄像机的时候, 有 2d, 3d 等其他的摄像机存在, 这个时候存在一个层级问题, 就比如有些需要显示在3d 上层, 有些需要显示在3d 下层, 对于一些 2d 项目处理起来有点不太好, 是否能让摄像机也服从场景节点树深度显示,而不是需要调整各个摄像机的渲染顺序,这种情况就需要多加个摄像机

或者有什么更好的处理方式也可以

这个射线检测问题解决了,可以更新第三方库:https://github.com/cocos/cocos-engine-external/pull/459
如果对原因感兴趣的话可以看:PhysicsSystem.raycastClosest() can not work correctly in bullet · Issue #17629 · cocos/cocos-engine · GitHub

深度那边把less改成always,这时候渲染层就会根据画家算法,不过得在引擎得管线把排序得相关逻辑注释掉,要完全达到你得要求有点难,因为3d项目你最后还是得深度测试,而且不排序,对性能有很大影响,这个需求我们内部会讨论下哈

1赞


我不知道我理解的对不对,是不是第一个红框应该是as you can see,第二个红框是we may support。
:joy: :joy: :joy:

改了。谢谢。

好的,感谢回复

嗯嗯,好的,感谢