使用GUI纹理移动播放器

时间:2014-07-11 09:22:55

标签: c# user-interface unity3d

我有一个GUI纹理,并附加以下脚本:

using UnityEngine;
using System.Collections;

public class moveUP : MonoBehaviour {

    public float moveSpeed=3f;
    public GameObject player;
    void OnGUI() {
           if (Input.GetMouseButton(0))
            player.transform.Translate(Vector3.up * moveSpeed * Time.deltaTime);
}

它不仅可以在我单击GUI纹理时使用,还可以在我点击屏幕时使用。

我该如何解决这个问题?

或者,如果您有任何其他脚本用于移动具有GUI纹理的播放器,请随时与我分享。

3 个答案:

答案 0 :(得分:1)

OnGUI更改为Update

void Update() {
       if (Input.GetMouseButton(0))
        player.transform.Translate(Vector3.up * moveSpeed * Time.deltaTime);
}

答案 1 :(得分:0)

OnMouseDown()?

怎么样? 当用户在GUIElement或Collider上按下鼠标按钮时,会调用

OnMouseDown()

答案 2 :(得分:0)

Unity文档说必须从Input.GetMouseDown例程调用Update()函数。正如Savlon所说,只要你用鼠标点击它就会运行该功能,无论你在哪里,所以你应该使用GUI的事件。

因此,您必须使用接口IPointerDownHandler并实现其方法OnPointerDown()

public class moveUP : MonoBehaviour, IPointerDownHandler
{
    ...

    public void OnPointerDown(PointerEventData pointerEventData)
    {
        //Do something, like move...
    }
}

脚本必须具有您希望行为具有的元素。有关更多详细信息,请参阅Unity的UnityEngine.EventSystems中有关事件的文档。