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(
<div style={{ width: '100%', height: '100%' }}>
<div style={{ position: 'absolute', width: '100%', height: '100%', zIndex: 0 }}>
<Unity src="Libs/object_unity/Build/WebGL.json" />
</div>
<div style={{ position: 'absolute', width: '100%', height: '100%', zIndex: 1 }}>
<input style={{ marginLeft:60, marginTop:100, width: 600, height: 80, zIndex: 1 }} type="text" name="title" id="title" />
</div>
</div>
)
} else {
return(
<div>
<div>
<input style={{ marginLeft:60, marginTop:100, width: 600, height: 80, zIndex: 1 }} type="text" name="title" id="title" />
</div>
</div>
)
}
}
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);
}
}
我在ReactJS中为输入框创建了一个div,它运行良好。但在输入Unity WebGL背景的另一个div之后,键盘事件无效。 Unity集成有什么问题?
以下是控制台日志:
[HMR]等待来自WDS的更新信号...... bundle.js:5945 [HMR]等待来自WDS的更新信号...... UnityLoader.js:4如果将Web服务器配置为使用gzip压缩托管.unityweb文件,则可以缩短启动时间。 bundle.js:9304 [WDS]启用热模块替换。 blob:localhost:8000 / e1696fb5-90a3-4d98-b184-aebb735ab198:2初始化引擎版本:2017.2.0f3(46dda1414e51)
UnityLoader.js:1创建WebGL 2.0上下文。 blob:localhost:8000 / e1696fb5-90a3-4d98-b184-aebb735ab198:2渲染器:WebKit WebGL
blob:localhost:8000 / e1696fb5-90a3-4d98-b184-aebb735ab198:2供应商:WebKit
blob:localhost:8000 / e1696fb5-90a3-4d98-b184-aebb735ab198:2版本:OpenGL ES 3.0(WebGL 2.0(OpenGL ES 3.0 Chromium))
blob:localhost:8000 / e1696fb5-90a3-4d98-b184-aebb735ab198:2 GLES:3
团块:本地主机: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:创建OpenGL ES 3.0图形设备;上下文级别;上下文句柄1
blob:localhost:8000 / e1696fb5-90a3-4d98-b184-aebb735ab198:2 UnloadTime:46.055000 ms
2blob:localhost:8000 / e1696fb5-90a3-4d98-b184-aebb735ab198:2警告:2个FS.syncfs操作立即执行,可能只是做额外的工作
答案 0 :(得分:2)
我找到了这个问题的解决方案。
我从这个链接找到了解决方案。 https://docs.unity3d.com/ScriptReference/WebGLInput-captureAllKeyboardInput.html
所以我在Unity项目中添加了一些代码,并重建了Unity项目。
以下是Unity的代码。
#if !UNITY_EDITOR && UNITY_WEBGL
WebGLInput.captureAllKeyboardInput = false;
#endif
所以我在MonoBehaviour中添加了这段代码。
然后,它运作良好。