Releases: layabox/LayaAir
LayaAir 3.3.1 Engine Library
更多版本日志以及IDE的下载,请前往LayaAir官网:https://layaair.com/#/engineDownload
Bug Fixes
Engine
- Fixed the bug where video textures could not be used in the native-windows installer package.
- Fixed the bug where post-processing effects were incorrect when using
openGL
in the native engine. - Fixed the bug where looped background music in the published Android
apk
only looped a small initial segment. - Fixed the bug where volume settings were ineffective when replaying background music.
- Fixed the issue of incorrect pixel color picking in Alipay Mini Games.
- Fixed the bug where 2D post-processing glow effect caused UI position offset.
- Fixed the bug where 2D post-processing effect was oddly cropped on real devices.
- Fixed the bug where dynamically added nodes with 2D post-processing did not display content on the stage.
- Fixed the bug where child nodes appeared incomplete when parent node had 2D post-processing applied while children were skewed.
- Fixed the bug where removing a 2D node caused post-processing effect errors.
- Fixed the bug where stage scaling caused incorrect coordinates in 2D physics raycasting.
- Fixed the reference count bug in spine component (
Spine2DRenderNode
) mesh. - Fixed the bug where spine animation opacity could not be modified in real-time.
- Fixed various rendering anomalies caused by memory cleanup or other issues in spine animations.
- Fixed the bug where switching spine resources could cause VRAM overflow.
- Fixed the bug where resetting the source of a playing spine and delaying play caused errors.
- Fixed the bug where sprite matrices used in spine did not include anchor offset (after fix, sprite's (0,0) is always the origin, following sprite position).
- Fixed the bug where timeline animations triggered events that were not reached.
- Fixed the bug where 2D timeline animations could not loop.
- Fixed the bug where animations with total frames less than FPS would stutter.
- Fixed the bug where looping animations shorter than 1 second would stay on the last keyframe until 1 second.
- Fixed the bug where parent node alpha did not affect masked child node alpha.
- Fixed the bug where
Laya.Scene.gc()
could not clear resources. - Fixed the bug where
Area2D
offset caused mouse detection area to misalign with original UI position. - Fixed the bug where program blueprints overlapped when copied.
- Fixed the bug where 2D particles with Simulation Space set to world mode emitted from incorrect positions.
- Fixed the bug in classic UI system where repeatedly copying a panel container and changing scrollbar type caused incorrect scrollbar type values.
- Fixed the bug where drawing rounded rectangles with rotated nodes resulted in straight corners.
- Fixed the display bug of graphics
drawCircle
when scaled. - Fixed the bug where setting a 2D camera as main camera caused 2D physics collision shapes to be offset.
- Fixed the bug where 2D rigidbody circular collision shapes displayed anchor at (0,0).
- Fixed the batch processing anomaly of UI material.
- Fixed the bug where text components on mobile devices with width over 2048 were not fully displayed.
IDE
- Fixed the bug where tileMap edges could not be edited in IDE viewport when zoomed in.
- Fixed the bug where modifying tileMap in prefabs could not be dragged and edited in scene.
- Fixed the bug where alternative tiles created by tileMap had incorrect flipping.
- Fixed the bug where 2D physics helper lines displayed incorrectly at resolutions other than 100%.
- Fixed the bug where ogg resources could not be dragged into audio nodes.
- Fixed the bug where 2D shader changes did not immediately take effect in the scene.
- Fixed the bug where objects with masks could not be hidden by clicking the eye icon in scene editor.
New Features and Optimizations
- Added: Refactored the statistics system. IDE now supports customizable statistics display and engine provides interfaces for custom statistics. Developers can freely choose what to display and organize.
- Added: 2D DrawCall auto-optimization feature.
- The new 2D system supports dynamic batching: consecutive elements meeting certain conditions (e.g., from the same atlas, same material) are automatically merged into a single DrawCall (DC).
- LayaAir will adjust objects with the same material to consecutive rendering order without changing final display, allowing dynamic batching. This adjustment is transparent to developers.
- Enabled via node property
DrawCallOptimize
; all child and grandchild nodes of the node will be automatically merged. Note: when element count exceeds ~500, CPU usage may increase.
- Added: Text/Label (classic UI)/GTextField (new UI) has a "single-character rendering" option. When enabled, identical characters of same size share one cache globally, reducing memory and performance overhead for dynamic text.
- Added: Sprite now has
zIndex
property to control rendering order. HigherzIndex
renders on top. By default, this order is global. WhenstackingRoot = true
,zIndex
only affects internal rendering order. - Added: Classic UI layout containers
HBox
/VBox
now supportautoSizeMode
andskipHidden
options for automatic layout. - Added: 3D scene viewport coordinate axis widget with quick keys for front, back, left, right, top, bottom views (
Ctrl+Shift+1
toCtrl+Shift+6
). - Added: Timeline panel now supports selecting all keyframes vertically below the clicked frame when holding
Ctrl+Shift
. - Added: TileMap can now be dragged with middle mouse button for editing.
- Added: TileMap editing now supports
Ctrl+Z
undo andCtrl+Y
redo. - Added: Third-party TiledMap exports now support CSV format.
- Added: Audio resources can be dragged into the hierarchy panel to create audio nodes directly.
- Added: Blueprint panel now supports custom shortcuts; developers can assign keys to frequently used panels.
- Optimized: Blueprint materials now support Chinese.
- Optimized: Animation state machine parameter panel now uses input fields for parameter names, avoiding confusion about editing.
- Optimized: Refactored native engine audio playback.
- Optimized: Improved list and panel component property panel display in IDE.
- Optimized: Refactored 2D physics helper lines to no longer depend on Line2D library, avoiding errors when Line2D is not checked.
- Optimized: Native installer now prompts network error if no connection on startup.
LayaAir 3.3.0 Engine Library
更多版本日志以及IDE的下载,请前往LayaAir官网:https://layaair.com/#/engineDownload
Engine Updates
New Features
- Added 2D navigation pathfinding components, such as static navigation surfaces and agent pathfinding.
- Added 2D lighting and shadow components, including directional light, sprite light, free-form light, spotlight, and light occluder.
- Added 2D renderer components, such as mesh, trail, line, and tilemap layers.
- Added a 2D particle system.
- Added 2D camera.
- Added 2D area node.
- Added full support for 2D custom shaders. Previously, only custom materials were supported in 2D.
- Added brand-new tile map; the old TiledMap is now deprecated and not recommended, but still temporarily compatible.
- Added Windows platform custom extensions. Developers can use LayaAir's extension tools to generate dynamic libraries to extend project functionality, such as Steam integration.
- Added 2D global lighting properties:
lightDirection
,ambientColor
,ambientLayerMask
,multiSamples
,order
,antiAlias
,lightMode
,sceneMode
, andshadowDistance
. - Added normal map support (
normalTexture
) for 2D mesh renderer. - Added
position
property setting to 2D physics rigid bodies. - Added
Additional
rendering architecture supporting material batching based onBaseRender
. Material batching reduces draw calls and improves GPU performance by merging render data for objects sharing the same material.
Example: Two hundred spheres with different colors rendered with only one draw call. - Added support for Spine 4.2 runtime library, allowing physical properties on Spine animations.
- Added
get position
andget rotation
for 2D rigid bodies, with coordinate conversion from world to local space. - Added mixed layout of text and frame animation, e.g.
<img src='animation.atlas'>
. - Added
percent
property tographics.drawCircle
. - Added compound colliders and sleep detection for 3D physics.
- Refactored 2D rendering with a brand-new architecture. Static graphics performance increased by over 200%, dynamic graphics by over 50%.
- Added
zIndex
optimization. In a test with 4000 composites and 12,000 sprites, FPS improved from 4 to 60. - Added material
UBO
-based instance batching, enabling batching even with many variables (Note: requires platform UBO support). - Added 2D post-processing effects.
Feature Optimizations
- Refactored the Tween system:
- Compatible with
Laya.Tween.to
/Laya.Tween.from
, butnew Tween()
is no longer supported. - Supports number, Vector2/3/4, Color, Point, and string color values.
- Lightweight Tween objects, no reuse by default to avoid confusion.
- Avoids using
Handler
to prevent handler reuse issues. - Supports richer options and serial/parallel tasks.
- Compatible with
- Optimized 3D UI with camera-locked mode, suitable for VR UIs.
- Further modularized the engine library for minimal builds, helpful for ad demos.
- Optimized particle compilation with
mulShaderDefineMode
setting inShuriKenParticle3DShaderDeclaration
. - Refactored 2D sequence frame player
Animation
, simplified interface, added new componentFrameAnimation
. - Improved WebGL performance under Native.
- Improved new UI system: image components now support flipping, fill progress, circular clipping, etc.
- Added a Gears button to control visibility in the new UI system.
- Added release-time cleanup for
GTextField
andGLoader
in the new UI system. - Added
GMovieClip
to the new UI system. - New UI system now fully supports multi-language (i18n).
- Fully refactored and open-sourced mini-game adaptation libraries across platforms.
- Optimized blueprint database with many missing classes/functions added; trimmed during release to reduce size.
- Refactored Native JS/C++ interaction layer, removed redundant call paths, significantly improved rendering performance.
- Added mutual masking disable & warnings to prevent display issues.
IDE Updates
New Features
- Added a new UI system with architecture similar to FairyGUI.
- Added visual editing for 2D navigation pathfinding.
- Added visual editing for 2D lighting and shadows.
- Added visual editing for 2D particle system.
- Added template creation for 2D custom shaders - basic rendering.
- Added visual editor for new TileMap (old TiledMap not supported).
- Added Linux build process and UI.
- Added definitions for 2D render layer names.
- Added global settings for 2D lighting in project settings.
- Added options in engine modules to support both traditional LayaAir UI and FairGUI system, along with modular engine components.
- Added blueprint support for new UI system.
- Added support for importing maps (
tsx
,tmx
,tx
) made in third-party TiledMap editor into LayaAir3-IDE, auto-converted to internaltileMap
format (tres
). - Added
terrainSets
accessor in TileSet to define tile connection rules for automatic terrain stitching. - Added animation property support to sprite atlases; a regular atlas can now become an animated resource.
- Added
addMenuItem
API as an alternative to@menu
decorator, supporting default handlers:Editor.extensionManager.addMenuItem("Hierarchy/MyPrefab/Button", null, { id: "67b6743c-3e75-446c-bdf2-8d1c4e320062" });
- Added WASM subpackage support in split modules.
- Added
stat
info toggle in preview panel. - Added source map protection in preview server (enabled by default).
- Added support for single-page HTML publishing with compression.
- Added prefab replacement function in node menu, keeping same name and matching property types.
- Added right-click on property title in inspector to copy, paste, or reset property.
- Added 2D post-processing effects (replaces filters; old filters still usable via code).
- Added project config for UI system.
Feature Optimizations
- Optimized 3D render layer name definitions.
- Hid unconfigurable properties in 2D particle editor.
- Added auto-import for 2D line renderer library.
- Optimized new UI system.
- Enhanced menu shortcut customization with dynamic key binding.
- Hierarchy panel now shows image thumbnails for Image and GImage nodes.
- Improved appearance and positioning of drawing-related buttons.
- Unified 2D and 3D physics usage:
- Removed 2D collider component; now added to rigid body.
- Added static collider for static bodies.
- Rigid body no longer supports static type directly.
- Optimized
showall
mode to avoid canvas overdraw on PC browser zoom-out; adjustedfull
mode to prevent UI clipping. - Exposed animation state machine events (
OnStartEnter
,EVENT_OnStateUpdate
,EVENT_OnStateExit
,EVENT_OnStateLoop
) for better animation logic control. - Centered prefab preview display for better visibility even if origin is offset.
- Improved new UI system with quick prefab creation entries under Tools menu (usable for plugin UI too).
- Optimized
WebIFrame
class in plugin system to avoid reload on tab switch. - Fully refined the FairyGUI-based new UI system.
- Optimized blueprint system for better stability and usability.
LayaAir 3.2.7 Engine Library
更多版本日志以及IDE的下载,请前往LayaAir官网:https://layaair.com/#/engineDownload
BUG Fixes
Engine
- Fixed a bug where the
Box2D wasm
version could not be used in Android installation packages. - Fixed a bug where destroying unused resources would prevent button state switching.
- Fixed a bug where
s_Blend
set to 2 conflicted withs_BlendDstRGB
, causing native Android crashes. - Fixed an issue where moving the camera to follow a moving object in physics caused jittering.
- Fixed an error in time update calculation when
3D
physics steps were greater than 0. - Fixed an error in parsing render states of
3D
materials. - Fixed a memory overuse bug in Spine animations caused by multiple bones and multiple animations.
- Fixed the issue with text ellipsis in
Text
. - Fixed a bug where
HttpRequest.send()
in the Edge browser sometimes concatenated headers incorrectly. - Fixed an issue when adding scenes with multiple character controllers.
IDE
- Fixed an issue where modified custom type objects registered in scripts did not refresh promptly in the
IDE
. - Fixed a stack overflow bug when the camera's
RenderTarget
color format included an Alpha channel. - Fixed a bug where the alignment function did not consider the pivot.
- Fixed an issue where selecting nodes from the hierarchy panel did not preserve selection order.
- Fixed incorrect key-value pairs in the WeChat publishing description file.
- Fixed an issue with right-click menu search positioning in the blueprint editor.
- Fixed a bug where files with spaces could not generate thumbnails.
New Features and Optimizations
-
New: Added support for publishing as a single-page HTML file.
-
New: Optimized physics simulation update and added
isGrounded
method for3D
character controllers to get ground state. -
New: Added support for compressed texture publishing on platforms like Alipay and Taobao for
iOS
. -
New: Added support for setting width and height by percentage when filling textures in
2D
drawing. -
Optimization: Changed
connstant
instartRotationConstantSeparate
of3D
particles in theIDE
property panel to use degrees (still in radians in code). -
Optimization: Improved event dispatching for physics components.
LayaAir 3.2.6 Engine Library
更多版本日志以及IDE的下载,请前往LayaAir官网:https://layaair.com/#/engineDownload
BUG Fixes
Engine
- Fixed the bug with the initial anchor point of the 2D physics mouse joint.
- Fixed the issue with rendering element updates in the skybox renderer.
- Fixed the assignment bug of the camera's SkyRenderElement.
- Fixed the memory leak issue in particle effects.
- Fixed the crash bug when packaging for Android x86 architecture.
- Fixed the issue of certain nodes not displaying after Android packaging.
IDE
- Fixed the bug that caused a rendering error in the scene after closing a prefab in the IDE.
- Fixed the bug where the 3D particle shader template created in the IDE differed from the engine's built-in particle shader.
- Fixed the calculation error of joint line positions in 2D physics when a rotation value is set on a node.
- Fixed the bug where a gear joint bound to a non-first joint of its node caused issues.
- Fixed the bug that caused errors when resetting IDE joint components (prismatic, motor, pulley, distance).
- Fixed the bug where the shader importer incorrectly added
nullable=true
by default when handling uniforms. - Fixed the bug where Backspace could not delete keyframes on Mac.
- Fixed the error that occurred when selecting over a thousand images.
- Fixed the issue where an extra checkbox was shown in the material panel for custom shader scripts.
- Fixed the issue where
shader.json
was not recognized in Alipay mini games.
New Features and Optimizations
- Added: Support for changing the component addition order in the IDE.
- Added: Platform icons have been added to the build and publish interface for all platforms, making platform differences easier to identify.
- Optimized: Gear joints are now limited to binding with prismatic and revolute joints to prevent errors caused by incorrect joint types.
- Optimized: The initial rotation constants of the 3D particle system in the IDE are now input and displayed in degrees (still radians in code).
- Optimized: Added filtering for connected joint types in gear joints to enhance robustness.
- Optimized: Compressed the default skybox image size.
- Optimized: Export user-defined extension name conversion configurations to the engine during publishing.
- Optimized: Added a favicon to the IDE preview server.
LayaAir 3.2.5 Engine Library
更多版本日志以及IDE的下载,请前往LayaAir官网:https://layaair.com/#/engineDownload
BUG Fixes
Engine
- Fixed a bug where the dynamic Nav Mesh Modifier Volume became invalid due to incorrect bounding box
min
values. - Fixed errors with 3D physics composite collider shapes, character controller friction settings, and incorrect PhysX method usage.
- Fixed a bug where using
scrollRect
with scaled Sprites caused incorrectglobalToLocal
calculations. - Fixed the issue where camera viewport ray conversion did not take pixel ratio into account.
- Fixed the issue where modifying
SkinnedMeshRender
'sLocalBounds
value did not immediately redraw the bounding box wireframe. - Fixed a bug where setting
cacheAs
caused an incorrectinvertY
state, leading to 3D-UI masks flipping when changing width and height. - Fixed a bug where adding multiple instances of the same prefab under the same hierarchy with Spine effects caused filter effects to incorrectly affect other objects.
- Fixed a bug where background music set to loop in a packaged
android-apk
would only play once. - Fixed a bug where the rendering order of certain 3D nodes in a packaged
android-apk
was incorrect.
IDE
- Fixed a bug where during IDE preview runtime, destroying a 3D rigidbody’s collider caused continuous
fd_write
errors, leading to a dead loop and IDE freeze. - Fixed a bug where after animation baking, animation node names identical to prefab resource names were mistakenly recognized as resource paths, causing some mesh animations to be lost after publishing.
- Fixed a bug where after deleting a script in the
runtime
input field, the missing reference warning could not be cleared properly. - Fixed a bug where after opening a Panel in the scene view, the scroll area did not enlarge according to the Panel’s content.
- Fixed a bug where the preview view became unusable after encountering a
GUEST_VIEW_MANAGER_CALL
error caused by infinite loops or certain user code conditions. - Fixed several bugs related to Program Blueprint:
- Fixed the real-time refresh issue after blueprint data changes.
- Fixed incorrect array connection validation.
- Fixed the Type list to be sorted in ascending order.
- Fixed mouse dragging of nodes where movement was not smooth and gradually became offset.
- Fixed the issue where calling
as
on a base class incorrectly executed the base method instead of the actual overridden method. - Fixed the inability to use
Node.addChild
within blueprints.
New Features and Optimizations
- New: Added support for setting the allow-sleep attribute in 3D physics.
- New: Added support for
MCP
(Model Context Protocol) standard, providing developers with extensible secondary development interfaces. Developers can create custom Tool tools and Prompt modules forMCP
clients like Claude and Cursor to invoke. - New: Enhanced Program Blueprint, including:
- Added support for function overloading in blueprints; variables in blueprints can now define constraint attributes such as
isAsset
,assetTypeFilter
,fractionDigits
. - Improved link validation logic for generics.
- Added copy and paste options to the node right-click menu.
- Optimized search logic in the right-click menu.
- Added support for function overloading in blueprints; variables in blueprints can now define constraint attributes such as
- Optimization: In the hierarchy panel, after searching for a node name and selecting a node, exiting search will automatically expand to and highlight the selected node.
- Optimization: Adjusted the display position of prefab previews to avoid inconsistency between edit-time and run-time preview when anchor points are set.
- Optimization: The canvas for rendering text is no longer width-limited, preventing issues where overly long text (exceeding 2048 in width or height) gets clipped.
- Optimization: Deprecated the APIs for setting up-axis and jump speed in the 3D physics character controller (alternative APIs are available), to avoid developer confusion.
LayaAir 3.2.4 Engine Library
更多版本日志以及IDE的下载,请前往LayaAir官网:https://layaair.com/#/engineDownload
Version 3.2.4 Release Changelog
Bug Fixes
Engine
- Fixed a bug where the random number sequence for some emission shapes was not fixed when the automatic random seed was not selected in the 3D particle system.
- Fixed a bug where the 2D physics velocity became faster when clicking a node in the IDE hierarchy panel during preview runtime.
- Fixed a bug where switching to different types caused errors after IMAGE resources were destroyed due to lost resource types.
- Fixed a bug where text input in the Native Windows package was not functional.
- Fixed a bug where text and images appeared blurry in the Native Windows package.
- Fixed a bug where changing mesh vertex data of a 3D node did not update the display.
- Fixed a bug where input text occasionally had a background color due to the reuse of Graphics drawing commands.
- Fixed a bug where the GraphicsBounds might not refresh after the drawing commands were updated.
IDE
- Fixed a bug where the color setting for the FillTexture drawing command was invalid.
- Fixed a bug where cascading failed if EnumField was a numeric type.
- Fixed a bug where the up and down arrow functionality in the hierarchy panel became invalid after renaming using F2.
- Fixed a bug where the image release compression format might incorrectly include the source file.
Additions and Optimizations
- Decoupled the engine library reference relationships, solving the issue where .glsl files could not be loaded if the 3D core module was not checked in the IDE.
- Added the mulDefine macro configuration setting in ShurikenParticleShaderDeclaration, allowing developers to choose whether to enable it, optimizing shader compilation efficiency in different scenarios.
- By default, the texture source file option is checked when publishing on Douyin and WeChat platforms to avoid confusion for developers.
- Upgraded the API documentation website with a brand-new interface, supporting both light and dark modes (URL: https://layaair.com/3.x/api/index.html).
- Added a shape editing tool button for 3D physics colliders and optimized the display of component properties and descriptions for 3D physics components.
- Removed deprecated parameters from OPPO (which caused errors).
- Removed the restriction on the required suffix when publishing to the vivo platform (vivo platform update).
- After publishing a vivo mini-game, command-line QR code debugging is now supported.
LayaAir 3.2.3 Engine Library
更多版本日志以及IDE的下载,请前往LayaAir官网:https://layaair.com/#/engineDownload
Version 3.2.3 Release Changelog
Bug Fixes
Engine
- Fixed a rendering error when all
slot.alpha
values in a Spine animation are set to 0, and an issue with the last frame not updating correctly. - Fixed the incorrect
playState
return after a non-looping Spine animation finishes playing. - Fixed an issue where enabling fast rendering in Spine caused rendering to freeze on the first frame after playback in certain scenarios.
- Fixed inconsistencies between Spine editor effects and engine rendering under specific conditions.
- Fixed incorrect brightness when using additive blending in Spine.
- Fixed errors in Spine under WebGPU mode when
sceneData
is null. - Fixed an issue where child node scripts continued executing after the parent node was disabled and the child node was removed.
- Fixed an issue with HTML text formatting where overflow handling and truncation with ellipsis displayed abnormally.
- Fixed a bug where frequent changes to button skins could cause display confusion.
- Fixed unit conversion issues when retrieving linear velocity for 2D rigid bodies.
- Fixed an error when enabling 2D rigid bodies.
- Fixed an issue where canvas transparency settings were ineffective.
- Fixed incorrect masking effects when mask nodes were rotated.
- Fixed an issue where setting texture repeat on PBR materials with non-power-of-two textures was ineffective.
- Fixed incorrect video texture effects in the native engine.
- Fixed the bug where the ray function modified the input values.
IDE
- Fixed incomplete display of a polygon set as a mask node in the scene panel of the IDE.
- Fixed an error in the atlas creation tool when texture scaling was set to 0.8.
- Fixed an error during undo (
Ctrl+Z
) after deleting a polygon point usingAlt
. - Fixed an error when converting a
text
node to alabel
node. - Fixed an issue where multiple settings of
Constant
in timeline animations could not be saved. - Fixed an issue where new vertices could not be added to the last edge of a polygon in the scene editor.
- Fixed an issue where the
Tree
component's tree node rendering callback was triggered twice. - Fixed an issue where replacing images in prefabs displayed correctly in preview but not after publishing.
- Fixed an issue where the 2D scene editing area would not display in certain scenarios.
- Fixed a bug where the order of serialized properties for prefab root nodes differed from the definition order.
- Fixed an error when extracting template files with a large number of compressed files, causing decompression failures on some computers.
- Fixed an issue on macOS where the
Command+Option+I
shortcut remained occupied by the IDE even when it lost focus, preventing the same shortcut from being used in other applications. - Fixed an issue where more than 30 scenes in the build and publish settings could not be displayed.
- Fixed a bug in the texture processing tool where scaling to a power of two was skipped.
Additions and Optimizations
-
Optimized a series of resource memory recycling issues, thanks to detailed feedback from the community developer (ID: codetypes).
-
Optimized particle compilation duration by adding the
mulShaderDefineMode
configuration to theShuriKenParticle3DShaderDeclaration
class. When set totrue
, it enables multi-macro mode, reducing single-particle compilation time but increasing macro variables and shader count. When set tofalse
, it disables multi-macro mode, increasing single-particle compilation time but reducing macro variables and shader count. -
Disabled setting button state color transparency in the IDE to prevent developer misuse.
-
Added the
maxDeltaTime
interface to Spine, allowing developers to remove playback speed limits when controlling playback speed viaLaya.timer.scale
.It is recommended to use
playbackRate()
to control playback speed instead of modifyingLaya.timer.scale
for Spine playback.
LayaAir 3.2.2 Engine Library
更多版本日志以及IDE的下载,请前往LayaAir官网:https://layaair.com/#/engineDownload
Version 3.2.2 Release Changelog
Bug Fixes
Engine
- Fixed the issue where using
play("specific animation name")
to play a specific animation in Spine was ineffective. - Fixed the issue where applying multiple filters or alpha settings on a node caused it to not display or rendered Spine effects invalid.
- Fixed the issue where setting the position of a
CharacterController
immediately afteraddChild
resulted in delayed effect. - Fixed the issue where enabling "color over lifetime" in the 3D particle system affected animation movement.
- Fixed the issue where using
drawTriangle
preventeddrawTexture
from rendering images. - Fixed the issue where condition transitions in 3D animation failed in
CrossFade
state. - Fixed the issue where setting the viewport of a camera caused 3D UI to be unclickable.
- Fixed the issue of rendering layer errors for transparent materials on native platforms.
- Fixed the issue where calling
getRenderTextureData
on native platforms resulted in a "not found" error. - Fixed the issue where rich text with
img
tags displayed image-text layout inconsistencies. - Fixed the issue where cone shapes failed to perform proper collisions.
- Fixed the issue where TiledMap and Spine animations failed to correctly handle occlusion.
IDE
- Fixed the issue where shader code generated by Blueprints was out of sync with the engine.
- Fixed the issue where pressing
Ctrl +
to zoom in on the 2D stage in the IDE did not work on the numpad. - Fixed the issue where dragging a property icon from a non-input field in the property panel to the left was ineffective.
- Fixed the issue where modifying shaders did not immediately refresh the material panel.
- Fixed the issue where cone shapes failed to perform proper collisions in the IDE.
Updates and Optimizations
- New: Opened IDE's built-in icon resources for direct use by plugins.
- New: Automatically opens the export directory after exporting resource packages locally, making it easier for users to locate the packages.
- New: Added support for importing local templates. Developers can export frequently used project resources or code templates as a zip package, share it with team members, and create new projects using custom local templates.
- New: Added support for WebP format textures.
- New: Resource Store now features a plugin for creating 2D nodes and UI elements, allowing developers to manage created objects based on resource names or extensions, and initialize property values.
- New: IDE now supports loading
.mjs
JavaScript files as modules if defined as plugins. - New: Added a compression option under "Project Settings -> Script Compilation -> Release Version," allowing users to exclude the removal of unused variables and functions, preventing runtime errors in certain third-party libraries after compression.
- Optimized: Switched the HarmonyOS v8 engine in Native to the
jsvm
engine. - Optimized: Improved API examples and official demos, fixing errors in the 2D physics collision filter example caused by outdated interfaces.
- Optimized: Enhanced the Resource Store's action baking plugin to terminate baking and provide alerts when the skeleton count exceeds 255, helping developers identify issues.
- Optimized: Added error prompts for missing component scripts.
- Optimized: Improved the project settings interface.
- Optimized: Enhanced the build and publish interface.
LayaAir 3.2.1 Engine Library
更多版本日志以及IDE的下载,请前往LayaAir官网:https://layaair.com/#/engineDownload
Version 3.2.1 Release Changelog
Detailed description of the new features in version 3.2:
BUG Fixes
Engine
- Fixed a bug where the position of UI objects under a 2D parent node using filters did not match the actual position.
- Fixed a bug where text displayed incorrectly in child nodes when DrawCallOptimize was set for a Box containing multiple text components.
- Fixed a bug where setting different scales on spine caused incorrect display when setting rotation.
- Fixed a bug where spine animations might flicker when switching actions repeatedly.
- Fixed a bug where filters applied to spine animation nodes caused them not to display.
- Fixed a bug where using blended color filters in spine 4.0 led to incorrect import effects in the IDE.
- Fixed a bug where static collision groups for prefabs resulted in incorrect collision body positions when placed in the scene.
- Fixed a bug where collider properties set in prefabs did not take effect.
- Fixed an anomaly in rigid body simulation under the Physx physics engine.
- Fixed a bug that caused a white screen in the Taobao mini-game adaptation library in certain cases.
- Fixed a bug where 2D animations targeting Graphics played correctly in the IDE preview but failed in the browser.
- Fixed a bug where PixelLine colors were incorrect.
- Fixed a bug where the nodeCommonMap was not cloned when recording Shader variant data.
- Fixed a bug in the Android file extension mechanism.
- Fixed a bug that caused crashes when running released Android packages in certain cases.
- Fixed a problem in the iOS packaging environment where background music could not be switched and there were dependencies on 3D libraries in 2D projects.
- Fixed a bug with precompiled shaders in the Native installation package.
- Fixed a bug where resources would still be downloaded over the network after packaging with DCC in Native release.
IDE
- Fixed a bug where property tips for expanded items in the IDE did not display.
- Fixed an issue where deleting the last point in the gradient color editing panel caused an exception.
- Fixed a bug where enabling worker loader led to web packaging failures.
- Fixed a bug that resulted in decimal coordinates appearing in certain operations.
- Fixed a bug where changing the center point position and box size of BOX type NavMeshObstacles did not reflect correctly in the editor.
- Fixed a bug where entry scripts for subpackages did not participate in version management when building for Web and other non-mini-game platforms.
Optimizations
- New: Support for wasm library adaptation on Douyin mini-games, OPPO, and vivo platforms.
- New: Automatically convert spine nodes in older version scene files to the 3.2 spine component.
- New: All plugin system APIs have been supplemented with comments; please update usage through “Developer Menu -> Update Engine d.ts”.
- New: Added shortcut key settings for file tags such as "Close" and several other operations.
- Optimization: Ensure text formatting does not place punctuation at the start of a line.
- Optimization: Improved the gradient color editing panel and particle gradient color settings with compatibility for single values; added copy and paste for gradients and curves.
- Optimization: Removed support logic for LayaAir2 data formats in the engine; for upgraded old projects that need to dynamically load LayaAir2's ls and lh files, check the
laya.legacyParser
library in the IDE's engine module options. - Optimization: When adding scenes in the general settings for IDE build publishing, duplicate additions will be filtered out.
- Optimization: In the IDE property panel, when the displayed quantity of array and dictionary elements exceeds a certain number, a "More" button will appear to optimize performance.
- Optimization: Added a prompt when the same vertex in spine has more than four bones (the fast rendering optimization scheme for spine cannot be used).
- Optimization: When opening a resource interface in the package manager, an active refresh request is added to help users check if the resource has an upgraded version.
- Optimization: Improved the smoothness and fluidity of operations like translation and rotation in the scene.
LayaAir 3.2.0 Engine Library
更多版本日志以及IDE的下载,请前往LayaAir官网:https://layaair.com/#/engineDownload
Version 3.2.0 Release Changelog
Bug Fixes
Engine
- Fixed the issue where 3D video textures were displayed incorrectly on the Native Android platform in OpenGLES mode.
- Fixed the error caused by the unsupported
spine.PathAttachment
. - Fixed the bug where a part of the image was missing, and the animation could not play after using path constraints in Spine.
- Fixed the display anomaly when the number of Spine bones exceeded 100.
- Fixed the error in Spine caused by using the loading timing in the
onEnable
lifecycle. - Fixed the flickering issue in Spine animation frames.
- Fixed the position offset bug caused by setting both filters and anchor points simultaneously.
- Fixed the bug where video nodes could not play in Native standalone packages.
- Fixed the bug where the 3D navigation
navAgent.getCurrentPath()
interface reported an error. - Fixed the bug where the engine would freeze if the nine-slice data was unreasonable.
- Fixed the bug where the first click on a PC touch screen triggered
onmouseclick
twice. - Fixed the bug where setting the
speed
of a 2D animation to a negative value caused incorrect event calls.
IDE
- Fixed the issue with particle curve editing.
- Fixed the bug where selecting multiple UI components and dragging them to change the X/Y values of the bounding properties in the properties panel would misplace the UI components.
- Fixed the bug where FBX animation files exported from 3D Max could not play because the start time was not at frame 0.
Updates and Optimizations
-
New: Added the strikethrough text feature.
-
New: Added a package manager.
Note: Package manager import and management is supported only when the package contains
package.json
and has the relevant fields configured. -
New: Added the ability to set the entry function:
Note: This script must export a function named
main
. After the engine initializes, this function will be called directly, and the default scene will not be opened. Developers can decide which scene to open within the entry function. -
New: Added support for using the engine's WASM library on the WeChat Mini Game platform.
-
New: Added support for scene hooks, allowing custom logic insertion in specific processes like creating, loading, or saving objects in the scene. For example, if you want the pivot of all newly created UI nodes to initialize at (0.5, 0.5), you can write a plugin like this:
@IEditorEnv.regSceneHook() export class TestSceneHook implements IEditorEnv.ISceneHook { //载入场景后调用 onLoadScene() { } //保存场景后调用 onSaveScene(scene: IEditorEnv.IGameScene, data: any) { } //新建节点对象后调用 onCreateNode(scene: IEditorEnv.IGameScene, node: Laya.Node) { if (node instanceof Laya.Sprite) node.anchorX = node.anchorY = 0.5;//初始化锚点 } //场景中创建组件后调用 onCreateComponent(scene: IEditorEnv.IGameScene, comp: Laya.Component) { } }
-
New: Added the option to include or exclude source code when generating source maps during release.
-
New: The script collection feature now correctly isolates the code between different script collections. During development, scripts from different collections can be imported directly. The IDE will automatically convert these imports into indirect references during compilation to achieve bundle splitting.
-
New: Script collections can now choose whether to load before the main script collection.
-
New: The release interface now supports setting the main package as remote.
-
New: Spine resources can now be dragged directly from the asset library to the hierarchy or scene, automatically creating Spine render nodes and Spine components.
-
New: Added support for preset texture types. Since the default value sets imported textures as 3D textures, for 2D projects, this can be changed to sprite textures, eliminating the need for manual adjustments. UI components can now automatically recognize them as 2D sprite textures.
-
Optimization: When using the 2D empty project template, the default texture type is automatically adjusted to sprite texture, making it more user-friendly.
-
Optimization: After adding engine components, the corresponding engine libraries are automatically referenced to avoid runtime errors caused by missing engine libraries.
-
Optimization: Added destruction detection for Spine nodes to prevent errors caused by asynchronously loading already destroyed nodes.
-
Optimization: Performance improvements for handling a large number of files when using caching on the WeChat Mini Game platform.
-
Optimization: Improved the efficiency of Native standalone packages, reducing the initial black screen time.
-
Optimization: Resource management no longer generates meta files for all files in
node_modules
folders or files and folders ending with “~”. -
Optimization: If developers choose to use WASM libraries from the engine modules, such as physics and navigation, the platform will automatically switch to the corresponding pure JS library for platforms that do not support WASM.
-
Optimization: The build task interface has been changed from a dialog box to a panel.
3.2.0-beta.3 Changelog
Update Date: 2024-08-27
Bug Fixes
Engine
- Fixed an issue where a Spine animation within a Box would be occluded when another Spine animation was present on the Box.
- Fixed the discrepancy between Spine animations in LayaAir and previews in SpineTrial.
- Fixed a bug where Spine effects would not scale in certain situations.
- Fixed an issue where the official Cannon physics engine plugin could not add a 3D rigid body in the IDE under certain conditions.
- Fixed a bug in the 3D physics engine where spheres would slide but not roll on slopes.
- Fixed a bug in the 2D physics rigid body component where the linear velocity was not converted to pixel units.
- Fixed a compatibility issue in version 3.1 where particles using the default ParticleShuriken shader would not render.
- Fixed a shader error in WebGL1 for particles.
- Fixed a memory leak in 3D UI caused by the context initialization holding a Texture2D.
- Fixed an issue with abnormal shadow rendering in WebGPU mode.
- Fixed a memory leak caused by continuously updating masks.
- Fixed a bug in the
beforeInit
method related to the newly addedafterInit
method. - Fixed a screen tearing issue on certain platforms when caching 2D as a static image.
IDE
- Fixed an issue where file extensions would change from uppercase to lowercase after enabling version control.
- Fixed a bug in multi-agent scene pathfinding where adding multiple identical navMesh components to a node would prevent them from being fully baked.
- Fixed an issue where exiting the timeline animation and clicking the close button on the popup did not return to the editing interface.
- Fixed an issue in the plugin system where creating two radio buttons using the
IEditor.Menu.create
interface would only allow one selection and prevent a second selection. - Fixed a bug where the
IBuildPlugin.onCollectAssets
interface in the plugin system was not called during the build process.
Major New Features
- Added a visual programming module (Blueprint).
- Added support and build publishing for the HarmonyOS NEXT platform.
General Updates and Optimizations
- Removed Spine from widgets. Starting from version 3.2, the node mode for Spine is no longer supported and has been replaced with the Spine skeleton animation component.
- Improved engine performance, especially noticeable in iOS environments.
- Added
useFrame
andupdateFrame
properties tovideoTexture
for optimizing video playback, addressing video playback stutter issues in the Android WeChat browser. - Added support for simultaneous touch screen and mouse operations on laptops that support both inputs.
- Hid the unsupported destroy array function in the particle emitter to prevent misuse that could cause errors.
- Deprecated the
drawToTexture
interface inSprite
, replacing it with thedrawToRenderTexture2D
interface. - Changed the ES5 conversion function in Alipay mini-game publishing to be built into the IDE, no longer using Alipay's converter to prevent large files from being ignored by Alipay.
- Added a debug log window to the Native mode of
Window
. TheShowDebugConsole=true
option in theconfig.ini
file will display the log window, which is hidden by default. - Added support for modifying boolean properties in the 2D timeline animation panel.
- Added an option to change the layer property of all child nodes when modifying the layer property in the 3D node property panel.
- Added support for automatic edge adaptation based on polygon shapes in 2D physical polygon collisions.
- Improved the
type
property of thecustom
node in the shader blueprint. - Enhanced the novice user experience: a popup will guide users to download the official Visual Studio Code website if VSCode is not installed. Added a Help menu entry for a beginner's guide (development environment and process).
3.2.0-beta.2 Changelog
Update Date: 2024-06-27
Bug Fixes
Engine
- Fixed a bug where skeletal animation examples would not play in the native environment.
- Fixed a bug where Windows projects published natively would not run if the path included Chinese characters.
- Fixed a bug causing crashes in certain cases when running natively.
- Fixed an issue on native iOS where multi-light source examples displayed abnormally in OpenGLES mode.
- Fixed an issue on n...