随笔 - 21, 评论 - 12, 访问 - 205264

导航


  • 访问:205264次
  • 积分:226分
  • 排名:第38名
  • 随笔:21篇
  • 评论:12条

随笔分类

随笔档案

相册

最新评论

阅读排行榜

评论排行榜

unity3d 阅读(5889) 评论(1)

我们需要捕获1-9这些数字,如果直接用GetKeyDown的话,需要这样写:

void OnGUI () {
for (int i = 0; a < 9; i++){
if(Input.GetKeyDown(KeyCode.Alpha[i])){
GUI.Box (new Rect (0,Screen.height - 50,100,50), "Item"+ i.ToString());
GUI.Box (new Rect (Screen.width/2,Screen.height/2,100,50), "Item"+ i.ToString()+1 );
GUI.Box (new Rect (Screen.width - 100,Screen.height - 50,100,50), "Item "+ i.ToString()+2);
}

但这不是最佳方案,我们可以使用Event来处理:

// 没有数字键按下,为0
private int numDown;
 
void OnGUI() {
     // Render boxes if numeric key 1-9 is pressed.
     if (numDown != 0) {
         GUI.Box(
             new Rect(0, Screen.height - 50, 100, 50),
             "Item " + numDown
         );
         GUI.Box(
             new Rect(Screen.width/2, Screen.height/2, 100, 50),
             "Item " + (numDown + 1)
         );
         GUI.Box(
             new Rect(Screen.width - 100, Screen.height - 50, 100, 50),
             "Item " + (numDown + 2)
         );
     }
 
     // 处理键盘事件
     int num;
     if (Event.current.type == EventType.KeyDown) {
         // 为了方便,转换到数值
         num = Event.current.keyCode - KeyCode.Alpha1 + 1;
 
         // 避免多个数字键同时按下
         if (numDown == 0 && num >= 1 && num <= 9) {
             numDown = num;
             Event.current.Use();
         }
     }
     else if (Event.current.type == EventType.KeyUp) {
         num = Event.current.keyCode - KeyCode.Alpha1 + 1;
         if (numDown == num) {
             numDown = 0;
             Event.current.Use();
         }
     }
}

发表评论
切换编辑模式