Unity 接收不到键盘按下的事件

Unity 接收不到键盘按下的事件,第1张

在看视频教程时,看到视频中为实现跳跃功能,将向上按键的检测放在了 FixedUpdate 中,但是实际 *** 作时,经常会遇到按了没反应。

将按键检测放在 Update 中即可

因为FixedUpdate存在漏帧的情况,它是基于秒的,或者准确的说是基于物理步更新,放在物理步的函数中处理本身就是错误的做法

模拟键盘

>

private bool isPress=false;

void OnGUI()

{

if(GUIButton(new Rect(0,0,50,50),"按钮"))

{

isPress = true ;//表示按下

}

else

{

isPress = false;//表示松开了

}

}

做游戏少不了控制,但是一个成熟的游戏引擎,是不能简单仅仅获取键盘中或者遥感确定的按键来控制,要考虑到用户更改游戏按键的情况,当然也得考虑到不同设备的不通输入方式,比如U3D是可以运行在iphone上的,iphone可没有键盘和上下左右键,他有平衡控制(简单化解为水平和垂直两个方向度数),如果用户使用飞行或者汽车方向盘手柄,那就不能简单用一个按键来描述了,需要有一个度数的问题(也可以简单分解为水平和垂直两个方向度数)。

U3D提供了一个Input类封装控制(按键)输入系统。

问题一:

我认为可以设定一个int值比如escapeTimes初始值设为1;当检测到“InputGetKey(KeyCodeEscape)”后escapeTimes++;然后

if(InputGetKey(KeyCodeEscape) escapeTimes ; 1)

{

ApplicationQuit();

}

最后通过协同函数检测如果按两次返回键时间间隔过长,则重置。具体代码(C)如下:

int escapeTimes = 1;

void Update()

{

if(InputGetKey(KeyCodeEscape))

{

//这个地方可以写“再按一次退出”的提示

escapeTimes++;

StartCoroutine(;resetTimes;);

if(escapeTimes ; 1)

{

ApplicationQuit();

}

}

}

IEnumerator resetTimes()

{

yield return new WaitForSeconds(1);

escapeTimes =1;

}

关于JavaScript怎么用Coroutine协同函数你可以百度一下,转换一下就行,很简单。

问题二:

这应该是关于UI分辨率适配的问题。你可以试一下NGUI插件,我认为是一款很好的UI插件,完全可以代替Unity自身的UI。NGUI可以使用锚点“Anchor”,可以将UI固定在任意需要的位置。

完全手写,木有功劳有苦劳哦~~

以上就是关于Unity 接收不到键盘按下的事件全部的内容,包括:Unity 接收不到键盘按下的事件、unity如何导入win api来模拟键盘按键的事件、UNITY3D 怎么获得GUI按键按下状态等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10158874.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存