分享

Unity腳本:GetButton與GetKey

 极简主义line 2021-04-09
  •            分類:Unity

  • 發佈:2014-05-06, 週二 10:05

  • 點擊數:2312

Unity腳本:GetButton與GetKey

GetButtonGetKey是透過Unity輸入類別取得按鍵或是搖桿按鈕輸入的方法。

兩者的差異在於,GetKey使用key codes來命名按鍵。

譬如說 KeyCode.Space 代表空白鍵。

我們可以用下面的程式碼來判斷是否按下Space鍵:

Input.GetKeyDown(KeyCode.Space);

GetKey可以很好的運作在鍵盤上,

但是依然建議使用GetButton 並且設定好屬於你自己的輸入控制。

控制管理器可以讓你命名自己的輸入,並且設定他所代表的按鍵或是按鈕。

設定輸入控制的方法可以在主選單上選擇 Edit -> Project Settings -> Input

我們可以看到預設的情況下,Jump 代表的就是空白鍵(事實上下面還有一個Jump代表著 joystick button 3):

所以很明顯地在預設其況下我們可以用下面程式碼來取得空白鍵是否被按下:

Input.GetButtonDown("Jump");

GetButton與GetKey的三種狀態:

GetButtonGetKey 有三種狀態,皆返回布林值。

GetButtonDown : 按鈕是否被按下,只有按下時的那一禎會返回True。

GetButtonUp: 按鈕是否被釋放,只有釋放時的那一禎會返回True。

GetButton: 按鈕是否在按下的狀態,只要按鈕被按下,就會一直傳回True。

GetKey與上面相同就不在多說。

官方教學影片中1:06秒開始有三種狀態的示意圖,可以參考看看。

來自官網的簡單js範例

KeyInput:

#pragma strict

public var graphic : GUITexture;
public var standard : Texture2D;
public var downgfx : Texture2D;
public var upgfx : Texture2D;
public var heldgfx : Texture2D;

function Start()
{
    graphic.texture = standard;
}

function Update ()
{
    var down  = Input.GetKeyDown(KeyCode.Space);
    var held = Input.GetKey(KeyCode.Space);
    var up = Input.GetKeyUp(KeyCode.Space);
    
    if(down)
    {
        graphic.texture = downgfx;
    }
    else if(held)
    {
        graphic.texture = heldgfx;
    }
    else if(up)
    {
        graphic.texture = upgfx;
    }
    else
    {
        graphic.texture = standard;
    }

    guiText.text = " " + down + "\n " + held + "\n " + up;
}

ButtonInput:

#pragma strict

public var graphic : GUITexture;
public var standard : Texture2D;
public var downgfx : Texture2D;
public var upgfx : Texture2D;
public var heldgfx : Texture2D;

function Start()
{
    graphic.texture = standard;
}

function Update ()
{
    var down  = Input.GetButtonDown("Jump");
    var held = Input.GetButton("Jump");
    var up = Input.GetButtonUp("Jump");
    
    if(down)
    {
        graphic.texture = downgfx;
    }
    else if(held)
    {
        graphic.texture = heldgfx;
    }
    else if(up)
    {
        graphic.texture = upgfx;
    }
    else
    {
        graphic.texture = standard;
    }

    guiText.text = " " + down + "\n " + held + "\n " + up;
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多