在WebGL构建中捕获输入事件

问题描述 投票:0回答:2

当运行Unity项目作为WebGL应用程序时,有没有办法在应用程序运行后捕获站点的输入事件(例如keypress)?

目前,一旦Unity应用程序启动,它就会进行键盘事件,因此我无法输入页面上的文本框。我能提出的最佳解决方法是使用jQuery直接读取keypress事件:

 $('#input_message').keypress(function(evt){
   event.preventDefault();

   var code = evt.keyCode || evt.which;
   var key=String.fromCharCode(code);
   $('#input_message').val($('#input_message').val() + key);
 });

};

这适用于我的直接需求,但我希望通过Unity API有一个更清洁的方法。

版本

  • Chrome v43
  • Unity 5.1.1f1
unity3d unity-webgl
2个回答
0
投票

如果我有足够的积分,我会发表评论但是:

您可以让游戏通过websockets将输入发送到您的站点。我用Azure + SignalR完成了类似的事情


0
投票

这个问题没有解决方案,所以如果有人来到这里,有一条短路:

默认情况下,Unity WebGL将处理发送到页面的所有键盘输入,无论WebGL画布是否具有焦点。这样做是为了使用户可以立即开始玩基于键盘的游戏,而无需先点击画布将其聚焦。但是,当页面上有其他应该接收键盘输入的HTML元素(例如文本字段)时,这会导致问题 - 因为Unity会在页面的其余部分获取输入事件之前使用输入事件。如果需要让其他HTML元素接收键盘输入,则可以使用WebGLInput.captureAllKeyboardInput属性更改此行为。

这是从here

您要找的物业是WebGLInput.captureAllKeyboardInput

© www.soinside.com 2019 - 2024. All rights reserved.