question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Unity 2021.2 build throws error when removing the canvas before invoking Quit on the Unity Instance

See original GitHub issue

Please avoid duplicates

Language and Compiler

Other TypeScript compiler

What environment are you using?

Local Development Server

When does your problem occur?

When the Unity Component unmounts

What does your problem relate to?

The problem seems Unity related

React-Unity-WebGL Version

latest

React Version

latest

Unity Version

2021.2

What happened?

Problem occurs within and outside of this module. An error is thrown when the canvas element is removed before invoking the Quit method on the Unity Instance.

TypeError: null is not an object (evaluating 'target.onwheel')
_emscripten_set_wheel_callback_on_thread@http://127.0.0.1:8080/Build/unity.framework.js

Reproducible test case

  • Create a Unity WebGL build
  • Add a button to the index.html which removed the Canvas element and than Quit’s Unity
  • Run the application on a web server and click the button
  • See error

Would you be interested in contributing a fix?

  • yes, I would like to contribute a fix

Issue Analytics

  • State:closed
  • Created 2 years ago
  • Comments:17 (5 by maintainers)

github_iconTop GitHub Comments

4reactions
jt-metatheorycommented, Jan 25, 2022

It’s a double problem…

  1. Unity messed up their quit with respect to the DOM
  2. React-router removed all their “history” stuff.

assuming you have a unityContext var and a state var “isLoaded”… the following is a fix.

import { UNSAFE_NavigationContext as NavigationContext } from 'react-router-dom';
// in your component
const { navigator } = useContext( NavigationContext );

    useEffect(() => {
       const unblock = navigator.block( async ( tx ) => {
            if(isLoaded) {
                await unityContext.quitUnityInstance()
                await setIsLoaded(false)
                tx.retry()
            } else {
                unblock()
                tx.retry()
            }
        } );
        return unblock;
    }, [navigator,isLoaded])
1reaction
jneljneljnelcommented, Jun 14, 2022

hey @jeffreylanters looks like the Unity ticket is Closed.

@SashaVigneron1 I’m wrestling with this as well. I can explicitly call unityContext.quitUnityInstance() with a button on my page but when trying to handle the browser navigation I’m not able to work around it. .

Read more comments on GitHub >

github_iconTop Results From Across the Web

IONIC WEBGL Out of memory on quit - Unity Forum
will throw a JS error. Before 2021.2, Unity would gracefully quit when canvas was destroyed - not anymore.
Read more >
Troubleshooting - Unity - Manual
Issues when building packages, - Missing MonoBehaviour errors ... You can either reset your project's package configuration or remove the following line ...
Read more >
Error when destroying unity webgl instance on Vue3
I have a working Unity WebGL application integrated with Vue3. ... Quit() during onUnmount event in Vue3, and the error changes to: enter ......
Read more >
Manual: WebGL templates - Unity
, you need prior knowledge of JavaScript concepts and terminology. When you build a WebGL project, Unity embeds the Player in a HTML...
Read more >
SDK & Release Notes - Photon Engine
*\Photon\Fusion\Resources\PhotonAppSettings.asset . Back To Top. Requirements. Unity 2020.3 or above;; Asset Serialization HAS to be set to text ( ...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found