Fix Unity 6 WebGL compatibility by replacing deprecated dynCall with makeDynCall#104
Open
Niaobu wants to merge 1 commit intoendel:masterfrom
Open
Fix Unity 6 WebGL compatibility by replacing deprecated dynCall with makeDynCall#104Niaobu wants to merge 1 commit intoendel:masterfrom
Niaobu wants to merge 1 commit intoendel:masterfrom
Conversation
…makeDynCall Unity 6 uses a newer Emscripten version where Module.dynCall_* functions are deprecated and cause "RuntimeError: function signature mismatch" crashes on WebGL builds. This replaces all dynCall invocations with the new makeDynCall syntax as per Unity's official guidance: https://docs.unity3d.com/6000.0/Documentation/Manual/web-interacting-browser-deprecated.html Changes: - onOpen callback: dynCall_vi -> makeDynCall('vi', ...) - onMessage callback (2x): dynCall_viii -> makeDynCall('viii', ...) - onError callback: dynCall_vii -> makeDynCall('vii', ...) - onClose callback: dynCall_vii -> makeDynCall('vii', ...)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Unity 6 (6000.x) WebGL builds crash with
RuntimeError: function signature mismatchwhen receiving WebSocket messages. This happens because Unity 6 uses a newer Emscripten version whereModule.dynCall_*functions are deprecated.Solution
Replace all
Module.dynCall_*invocations with the newmakeDynCallsyntax as per Unity's official deprecation guidance:Changes
onOpencallback:dynCall_vi→makeDynCall('vi', ...)onMessagecallback (2x):dynCall_viii→makeDynCall('viii', ...)onErrorcallback:dynCall_vii→makeDynCall('vii', ...)onClosecallback:dynCall_vii→makeDynCall('vii', ...)Testing
Tested on Unity 6000.0.63f1 WebGL build - WebSocket connections now work correctly without crashes.
Related
This is similar to PR #54 which fixed the earlier
Runtime.dynCall→Module.dynCall_*migration for Unity 2021.2.