Cocos Creator v3.8.4 beta released - 2024.8.22

Due to version schedule changes, version 3.8.5 has been changed to 3.8.4. The originally planned HarmonyOS special edition will be released in follow-up updates.

Known issues:

  • XR has not yet been adapted to the new pipeline.
  • The engine separation feature for Taobao mini-games is currently malfunctioning. It works on iOS but not on Android. This needs to be addressed by Taobao. If you need to use the engine separation feature in the future, please consult with Taobao’s official support.

2024.8.22

If no major issues are found, this version will be released as the official version. The package size for mini-games, whether using the new pipeline or the old one, will be smaller than in version 3.8.0 (with the physics engine using the Box2D WASM version).

Download Links

Windows
Mac

Engine

Bug fix

  • Fixed the issue where the opacity of Spine nodes was not effective. PR
  • Fixed the issue where some objects were not released after releasing the Skeleton-Asset.PR
  • Optimization: Reduced the number of times Skeleton-Asset parses JSON. PR
  • Fixed the potential error in the PhysicsContract.emit function when the Collider does not have a Rigidbody. PR
  • Fixed the issue on native platforms where the event dispatch order was not modified when updating the child array. PR
  • Fixed the issue where Bullet was not exported. PR
  • Fixed the issue where mouse enter and leave window messages were being swallowed. PR
  • Fixed the issue where only one touch listener could respond to TOUCH_END or TOUCH_CANCEL. PR
  • Fixed the issue on native platforms where the callback function order was incorrect in performFunctionInCocosThread. PR
  • Fixed the issue on native platforms where modifying a node’s position in the performFunctionInCocosThread callback caused the node’s worldPosition to not be updated in the next frame. PR
  • Fixed the issue on native platforms where modifying a node’s position in Director.EVENT_AFTER_DRAW caused the node’s worldPosition to not be updated in the next frame. PR
  • Fixed the crash issue in Spine’s setXXListener on native platforms when enabling or disabling Spine. PR
  • Fixed the issue where the geometry renderer was not displayed on native platforms in a custom pipeline. PR
  • Compressed the effect.bin file in the custom pipeline and added version control. PR
  • Fixed the issue where the Reflection probe sphere preview was not displayed in the editor for a custom pipeline. PR
  • Fixed the issue where the clear color was incorrect for multiple cameras in a custom pipeline. PR
  • Fixed the issue of rounding in the viewport for a custom pipeline. PR
  • Fixed the issue where unrelated Material Passes were rendered during UI rendering in a custom pipeline. PR
  • Fixed the issue where the skybox was displayed incorrectly in planar reflection scenes in the editor for a custom pipeline. PR
  • Reduced the package size of the custom pipeline.

Editor

Bug fix

2024.8.1

Download Links

Windows
Mac

Engine

New Features

● Added Tween.running getter to determine if the current tween is running. PR

● Added Tween.getRunningCount(target) static method to get the number of tweens associated with the target object. PR

● Added built-in support for Bezier and CatmullRom curve progress in the Tween module. Custom properties can be passed to tween.to/by by calling tweenProgress.bezier(c1, c2, p3). PR

● Added Tween.updateUntil method to add actions with an uncertain duration to the tween system. The current action can be terminated by returning true in the callback function, allowing for effects like tracking a dynamic object. PR

● Added support for utf-16 encoding to the TextDecoder on native platforms. PR

● New projects will use a custom pipeline by default, named Builtin. Old projects will continue using the old pipeline upon upgrade.

  • Added pipeline selection page. Users can choose between a custom pipeline and the original pipeline under Graphics.

  • The new pipeline currently does not support debug-view-runtime-control.ts, which will be omitted during packaging.

  • Features like post-processing can be configured via BuiltinPipelineSettings.

● SafeArea now supports setting symmetry, allowing for symmetric or asymmetric settings for the top and bottom (or left and right).

Bug fix

● Fixed syntax errors in scripts generated for the release package on native platforms, an issue introduced in version 3.8.3.

● Fixed compilation errors when using new JavaScript standard private member functions (e.g., #foo() {}) in TypeScript files, an issue introduced in version 3.8.3.

● Fixed an issue where Spine’s .wasm and .mem.bin files were also being generated on native platforms.

● Fixed an issue with Node.angle() returning incorrect values.

● Fixed a timing disorder issue with Component.scheduleOnce() callbacks.

● Fixed out-of-range issues in the GLES2 backend. PR

● Fixed an issue where if an exception was thrown in a node’s touch callback, other nodes could not respond to touch events. PR

● Fixed a black screen issue on certain Android emulators (e.g., MEmu). PR

● Fixed a memory leak with Bullet bodies. PR

● Fixed an issue with not properly clearing cache on the Taobao platform.

● Fixed a crash issue on native platforms when calling game.restart() if there were unhandled promise exceptions. PR

● Fixed an issue where adding new dirtyRenderer instances during the updateAllDirtyRenderers process could result in them being removed. PR

● Fixed a warning issue with outlines when using RichText. PR

● Changed the display method for videoplayer on the Byte platform to use textures for displaying video content. PR

● Standardized the display method for interstitial ads. PR, see documentation Multi-Resolution Adaptation Scheme

● Fixed inconsistent behavior when setting ENABLE_MULTI_TOUCH to true or false. PR

● Fixed an issue where bmfont colorDirty was not working on the web platform. PR

● Fixed incorrect rendering of SpriteRender Atlas. PR

● Fixed an issue where an extra atlas was being created. PR

● Fixed an issue in the editor where changing the button type from color to sprite, then to scale, and back to color would result in a black button. PR

● Enhanced developer experience by replacing the debugger; breakpoint in the ccAssert function with console.error. PR

● Optimized the 2D particle update buffer process to reduce unnecessary multiplication operations. PR

● Optimized file reading logic on native platforms, switching from synchronous to multi-threaded asynchronous reading to resolve resource loading stutters. On low-end Android devices, JSON file deserialization performance improved by about 30%.

Editor

Optimization

Here is the translation of the provided content into English:


● Moved the built-in resource library to a global location to speed up the initial opening of different projects. If any plugins have manually concatenated the resource library path, they may be affected. This feature can be turned off in Preferences → Labs, but it is enabled by default. (Known issue: When enabled, the native engine scene lab feature is not supported.)

● Added a menu entry for creating resource templates.

● The build parameter sourceMap now supports the inline parameter. Previously, enabling sourceMap would generate a separate file, which could not restore the TypeScript source code in native Chrome debugging. Developers encountering this issue can select the inline mode in the sourceMaps option on the native platform for easier debugging.

● Optimized the display spacing of the Windows menu bar.

● Project settings interstitial preview effects will now be displayed according to the adaptation mode.

● Auto atlas preview now supports displaying the atlas size.

● The editor now supports zoom level.

Bug fix

● Fixed an issue where the CLEANUP_IMAGE_CACHE configuration on the build interface might be ineffective.

● Removed the ineffective “Select All” option in the “Include Bundles” parameter on the build panel for an empty project.

● Fixed an issue where small images in nested auto atlas folders were not excluded from sub-atlases.

● Fixed errors and preview issues when the editor starts in an offline/intranet environment.

● Fixed the lack of a noticeable error message when attempting to build after the initial scene is missing.

● Fixed the issue where the “Developer Data Domain” field in the WeChat build template was ineffective.

● Fixed inconsistencies in the parameters of pre- and post-build hook functions on native platforms.

2024.6.28

Download Links

Windows
Mac

Update Notes

Engine

New Features

  • Pool supports setting a shrink threshold to ensure that the size after shrinking will not be less than the shrink threshold.
  • Support for mouse-leave and mouse-enter events.
  • Added Vec2.toVec3() interface.
  • Added Vec3.toVec2() interface.
  • Added ResolutionPolicy.getContentStrategy().
  • Added ContentStrategy.strategy.
  • When using sequence/parallel/then to chain sub-Tweens in Tween, sub-Tweens are allowed to use different targets. issue
  • Added reverse, id, union(fromId), timeScale, duration, pause, resume, pauseAllByTarget, resumeAllByTarget, update, start(time) interfaces to Tween.
  • If the target object bound by Tween is of type Node, the Tween system will automatically perform pause, resume, and stop operations based on the activation and destruction status of the Node. PR1, PR2
  • Tween supports easing strings and custom progress/easing functions for any property type. PR
  • On the Taobao Mini Games platform, WebSocket supports multiple instances. PR
  • Support for WebGPU, currently in experimental version.

Bug Fixes

  • Fixed the issue where after setting event.preventSwallow to true, the overlapping area would not respond to touch events: issue
  • Fixed the issue where some setter functions of Node would send modification events even when the value did not change.
  • Fixed the issue on Mini Game platforms (Taobao, Alipay) where innerAudioContext.onCanPlay might not exist, causing the sound to fail to play: issue
  • Fixed the nested issue in NodeEventProcessor.dispatchEvent(): issue
  • Fixed the flickering issue when tweening color.
  • Fixed the issue where _rot.x/y/z/w data in scene (.scene) and prefab (.prefab) files might have null invalid values: issue
  • Fixed the issue where the target of onStart/onUpdate/onComplete callback functions in Tween.to/.by’s opt?: ITweenOption was forcibly set to object, causing errors in strict mode; issue
  • Fixed the issue where Tween would change the property type of the target object during the process; PR
  • Fixed the issue where custom progress and easing types were missing in the props parameter of Tween.to/by; PR
  • Fixed the issue where the Tween system would automatically add a uuid property to target objects that are not of type Node; PR
  • Fixed the memory leak issue caused by WebSocket receiving binary data on Android platform; PR
  • Fixed the memory leak issue caused by hash calculation anomalies due to padding bytes automatically inserted by the compiler in gfx-related structures on Android x86 simulator; PR
  • Fixed the memory leak issue on native platforms when modifying the text of label in CacheMode (NONE) mode; PR
  • Fixed the issue where the UI popped up after catching exceptions in Button callback function with window.onerror/jsb.onError could not respond to touch/mouse events; PR
  • Fixed the issue where the game window size was displayed incorrectly after rotating the screen on iPad; PR
  • Fixed the issue where sound would still play after enabling the mute button on iOS devices; PR
  • Fixed the issue where game sound would not resume after receiving and hanging up a phone call from the background and then bringing the game to the foreground on iOS phones; PR
  • Fixed the issue where cleaning would not be reset under specific conditions in cache-manager’s clearLRU; PR
  • Fixed the issue of inconsistent behavior when setting enable_multi_touch differently; PR
  • Fixed the shader compilation error caused by the uniform of web skeletal animation joints not being rounded; PR
  • Fixed the out of range issue on native platforms with multiple light sources; PR

Editor

Bug Fixes

  • Upgraded Xiaomi packaging tool to support compiling Xiaomi with Node 18 and above versions.
  • Added an experimental option to automatically handle the MD5 option switch for build template files, allowing users to disable it.
  • Fixed the issue where other tag attribute fields in the html might be replaced when automatically replacing the MD5 path of file dependencies.
  • Fixed the error of building Bundle on HarmonyOS platform.
  • Fixed the display name issue of sub-assets on the assets panel.
  • Fixed the issue where the bottom of the Bundle resource preview list was not fully displayed when the list was too long.
  • Fixed the issue where the URL parameter of custom script templates was invalid and improved the creation script file name validation process.
  • Fixed the display and interaction issue of the scene list selection in the build panel and the missing state.
  • Fixed the issue where the second new build task on Huawei AGC platform did not update the configuration.
  • Fixed the issue where the gizmo icon of nodes in the animation panel was not displayed when selecting nodes in the animation edit mode.
  • Fixed the issue where multiple bones were added in the skeleton texture layout in the project settings, but there was no scrollbar.
  • Fixed the issue where the selected texture layer could not be painted again after reselecting the terrain node, and the texture layer needed to be switched to paint.
  • Fixed the issue where the terrain editing information was lost after entering prefab editing and returning to the scene.
  • Fixed the issue where the cursor big dot was truncated when the mouse was placed on the terrain and moved.
  • Fixed the issue where texture compression failed when building some format pictures.
5 Likes

The animation plays normally in the editor.
It’s playing strangely on the web.
// --------> ui-opacity.ts
public onDisable (): void {
this.node.off(NodeEventType.PARENT_CHANGED, this._parentChanged, this);
this.node._uiProps.localOpacity = 1;
this._parentOpacity = 1; // → Can be played normally after addition
this._setEntityLocalOpacityRecursively(this.node._uiProps.localOpacity);
}

Test.zip (47.8 KB)