Cocos Creator 3.8.4 社区公测帖 - 2024.8.22

383没有这leave 和 enter这两个函数

你说的这两个函数是用于支持鼠标进入、离开窗口的事件,是新增的:https://github.com/cocos/cocos-engine/pull/16886 。我没太明白你的具体问题是什么。

两个对象都监听mouse_enter事件,那么只有一个会生效,第一次或许会有两个都能生效,但是鼠标离开后就不生效了,只有一个能生效

明白了。鼠标进入窗口、离开窗口事件确实是应该做成广播形式。在目前的这个框架实现确实是存在这个弊端。

请教一下,我在源码里添加了一个给shader使用的全局变量,放在了UBOGlobal中,同时在game里添加了一个变量用来给游戏项目设置参数,ts相关代码都处理好了,网页版运行也正常。请问c++相关代码如何获取到game.ts中的值呢? PipelineUBO.cpp中的void PipelineUBO::updateGlobalUBOView函数中需要对新shader全局变量赋值。

目前我重写了这两个函数来解决,麻烦帮我看看有没有什么其他的问题,我测试是事件能正常了

1赞

嗯嗯,这样修改是可以的。方便提交 PR 到引擎仓库吗?

使用UBOGlobal的话,属于使用legacy-pipeline:
可以在PipelineSceneData.h中添加C++的getter/setter,并在cocos-engine/native/tools/swig-config/pipeline.i中注册PipelineSceneData的getter/setter。
之后重新编译引擎,在game.ts可以通过cclegacy.director.root.pipeline.pipelineSceneData获取到PipelineSceneData,并调用setter设置数据。
随后在updateGlobalUBOView通过pipeline找到PipelineSceneData,调用getter获取数据并设置。

如果是需要后处理,推荐使用新的自定义渲染管线,能比较容易的添加shader参数。
可以参考cocos-engine/editor/assets/builtin-pipeline.ts

收到,感谢感谢~

ok,好的

快发版了吧

ok,晚一些我提交一下

1赞

麻烦处理下这里,一帧处理不完的函数直接放到尾部这种操作,需要考虑下顺序吧,比如同一时间WebSocket发来的消息过多一帧处理不完,处理过程中再有消息过来,下一帧会处理后发过来的消息,搞出很多莫名其妙的问题

请问下,你的383不是从dashboard下载,而是从论坛下载的?

是dashboard下载的

我这边目前有个bug,android 端websocket 会出现数据解析错误的情况,是因为这个引起的么?web端不会出现这种情况

web不会有问题,原生才有,只是处理顺序错误,解析出错应该不会

我这边用381,383,调用view.setDesignXX, 通过view.on也是监听不到 canvas-resize的。
是ios 手机没错吧

有可复现的demo吗,目前您这边是确认这个引起的?理论上这个并不会改变回调的顺序

没有复现的,肯定会改变,现在是把回调缓存了,然后_functionsToPerform的锁就解开了,如果在处理这些回调的过程中,_functionsToPerform又有插入回调,并且超过16ms没处理完这一帧的回调,就会再把剩下没处理的回调再放到 _functionsToPerform后面,我这么说不知道能理解不