在WebGL构建中捕获输入事件

时间:2015-06-25 03:23:58

标签: unity3d unity-webgl

当运行Unity项目作为WebGL应用程序时,是否可以在应用程序运行后捕获网站的输入事件(例如按键)?

目前,当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

2 个答案:

答案 0 :(得分:0)

如果我有足够的分数,我会把这个评论作为评论:

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

答案 1 :(得分:0)

这个问题没有解决方案,因此,如果有人来这里,那是一条短路:

  

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

这取自here

您要查找的属性是WebGLInput.captureAllKeyboardInput