当一个虚拟按钮按下统一时,如何做一些鳕鱼

时间:2016-11-07 19:11:07

标签: c# button unity3d while-loop

我有一个触发代码,想要重复代码,同时按下虚拟按钮,我必须做什么? 有没有解决办法呢? 提前谢谢。

2 个答案:

答案 0 :(得分:2)

你是否想在游戏中设计自动枪械?

如果是,那么:

using UnityEngine;

public class Autof : MonoBehaviour {
    float fireDelay = 0f; // the delay between shots

    // Assume that the function below is your code to fire your weapon:
    void FireWeapon()
    {
        Debug.Log("Fire!!!");
    }

    // The function below activates the FireWeapon function
    void AutoFire(float fireRate)
    {
        if (fireDelay < fireRate)
        {
            fireDelay += Time.deltaTime;
        }

        if (fireDelay >= fireRate)
        {
            FireWeapon();
            fireDelay = 0f;
        }
    }

    void Update()
    {
        AutoFire(0.2f);
    }
}

答案 1 :(得分:0)

使用OnPointerDownOnPointerUp功能。调用适当的函数时,将变量设置为truefalse,然后在true函数中检查该变量是否为Update。将下面的代码附加到您要检测按下的Image上。

public class Pressed : MonoBehaviour, IPointerDownHandler,IPointerUpHandler
{
    bool pressed = false;

    public void OnPointerDown(PointerEventData eventData)
    {
        pressed = true;
    }

    public void OnPointerUp(PointerEventData eventData)
    {
        pressed = false;
    }

    void Update()
    {
        if (pressed)
        {
            Debug.Log("Pressed Down!");
            //Put Code to repeat here
        }
    }
}

请注意,如果Image不是图片组件而只是SpriteRenderer,则必须将Collider 2D附加到SpriteRenderer,然后将Physics 2D Raycaster附加到prototype相机。