Imansible immettere l’input con il div di background Unity WebGL in React JS

import React from 'react'; import ReactDOM from 'react-dom'; import {Unity} from 'react-unity-webgl'; var timerCount = 0; export default class App extends React.Component { constructor(props) { super(props); this.state = { nPageNum: 0}; } componentDidMount() { this.startTimer(this); } render() { if (timerCount > 5) { return( 
) } else { return(
) } } tick () { timerCount = timerCount + 1; if (timerCount > 10) { this.stopTimer(this); } this.setState({ nPageNum: 1 }); } startTimer () { clearInterval(this.timer); this.timer = setInterval(this.tick.bind(this), 20); } stopTimer () { clearInterval(this.timer); } }

Ho realizzato un div per Input Box in ReactJS e funzionava bene. Ma dopo aver inserito un altro div per lo sfondo di Unity WebGL, gli eventi della tastiera non funzionano. Cosa c’è che non va con l’integrazione di Unity?

Di seguito è riportato il log della console:

[HMR] In attesa del segnale di aggiornamento da WDS … bundle.js: 5945 [HMR] In attesa del segnale di aggiornamento da WDS … UnityLoader.js: 4 È ansible ridurre il tempo di avvio se si configura il server Web per ospitare .unityweb file usando la compressione gzip. bundle.js: 9304 [WDS] Sostituzione modulo caldo abilitata. blob: localhost: 8000 / e1696fb5-90a3-4d98-b184-aebb735ab198: 2 Initialize engine version: 2017.2.0f3 (46dda1414e51)

UnityLoader.js: 1 Creazione del contesto WebGL 2.0. blob: localhost: 8000 / e1696fb5-90a3-4d98-b184-aebb735ab198: 2 Renderer: WebKit WebGL

blob: localhost: 8000 / e1696fb5-90a3-4d98-b184-aebb735ab198: 2 Fornitore: WebKit

blob: localhost: 8000 / e1696fb5-90a3-4d98-b184-aebb735ab198: 2 Versione: OpenGL ES 3.0 (WebGL 2.0 (OpenGL ES 3.0 Chromium))

blob: localhost: 8000 / e1696fb5-90a3-4d98-b184-aebb735ab198: 2 GLES: 3

blob: localhost: 8000 / e1696fb5-90a3-4d98-B184-aebb735ab198: 2 EXT_color_buffer_float GL_EXT_color_buffer_float EXT_disjoint_timer_query_webgl2 GL_EXT_disjoint_timer_query_webgl2 EXT_texture_filter_anisotropic GL_EXT_texture_filter_anisotropic OES_texture_float_linear GL_OES_texture_float_linear WEBGL_compressed_texture_s3tc GL_WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb GL_WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info GL_WEBGL_debug_renderer_info WEBGL_debug_shaders GL_WEBGL_debug_shaders WEBGL_lose_context GL_WEBGL_lose_context

blob: localhost: 8000 / e1696fb5-90a3-4d98-b184-aebb735ab198: 2 OPENGL LOG: creazione di un dispositivo grafico OpenGL ES 3.0; Livello di contesto; Handle di contesto 1

blob: localhost: 8000 / e1696fb5-90a3-4d98-b184-aebb735ab198: 2 UnloadTime: 46.055000 ms

2blob: localhost: 8000 / e1696fb5-90a3-4d98-b184-aebb735ab198: 2 avviso: 2 operazioni FS.syncfs in volo contemporaneamente, probabilmente solo facendo un lavoro extra

Ho trovato le soluzioni per queste domande.

Ho trovato la soluzione da questo link. https://docs.unity3d.com/ScriptReference/WebGLInput-captureAllKeyboardInput.html

Così ho aggiunto del codice nel progetto Unity e ho ricostruito il progetto Unity.

Ecco il codice dell’unità.

 #if !UNITY_EDITOR && UNITY_WEBGL WebGLInput.captureAllKeyboardInput = false; #endif 

Così ho aggiunto questo codice nel MonoBehaviour.

E poi, funziona bene.