unity 判断鼠标左键在按下的状态

unity 中获取输入的类是Input。如判断是否有Delete键按下

if (Input.GetKeydown( KeyCode.Delete ))

{

       // do something

}

查看Input这个类的提供的方法,有个GetMouseButtonDown(), 参数为0表示左键,那么如果我们想知道左键是不是按下的状态那是不是就可以直接:

void Update()

{

   if (Input.GetMouseButtonDown(0))

   {

      Debug.Log( “mouse left button is down” );

   }

}

似乎没有任何问题。但是如果你把代码加入到你的测试程序中,运行程序,就会发现,当你按下鼠标并且不松开的时候虽然能输出“mouse left button is down”,但是只是几个而已,而不是我们期望的,如果不松开,会一直打印 mouse left button is down。这时候松开,在按下有只输出几个而已。

为什么?我们再看看它的帮助:

You need to call this function from the
Update
function, since the state gets reset each frame.It will not return true until the user has released the mouse button and pressed it again.button values are 0 for left button, 1 for right button, 2 for the middle button.

原来这个状态-按下的状态 只会持续几帧的状态,帮助中说每一帧都会重置,测试的结果并不是这样,能够持续几帧,之后就会重置。也就是几帧之后就这个函数返回false了。

跟这个函数类似的还有一个:GetButtonDown(), 文档说明如下:

You need to call this function from the
Update
function, since the state gets reset each frame.It will not return true until the user has released the key and pressed it again.

那我们到底得用什么方法,后来试过很多方法,发现 GetButton()这个可以达到想要的效果,只要鼠标是按下状态,这个函数就一直返回true,不过注意鼠标左键这个时候变成了”fire1″.

var projectile :
GameObject
;
function Update () {
if (Input.GetButtonDown (“Fire1”)) {
Instantiate (projectile, transform.position, transform.rotation);
}
}

上面这是个使用的例子。

如果你是想判断鼠标在一个场景中的物体上按下和抬起,就可以直接重载

void OnMouseDown()

void OnMouseUp()

版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.

    分享到:
This entry was posted in 3D Engine: Unity3D and tagged . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*