【问题标题】:Is there a way to run what's inside my update-function only on ButtonClick?有没有办法只在按钮单击时运行我的更新功能中的内容?
【发布时间】:2019-04-27 02:46:46
【问题描述】:

我正在 Unity 中构建一个“计时器”,以秒为单位从 0 到 13。 当我按下 UI 按钮时,我想运行更新功能中的内容。 到目前为止,我有这个;

    float tid = 0f;
    tid += Time.time;
    StingerSlider.value = tiden;
    if (StingerSlider.value == 13)
    {
        StingerSlider.value = 0;
    }

而且由于我使用 Time.time 或 Time.deltaTime,只有在每帧都调用它时才有效,我怎样才能使它工作? 是否有像 if(Button.Clicked){do this} 这样的简单方法可以在我的更新函数中使用?

【问题讨论】:

  • 你希望它运行多少次?
  • 每次按下按钮
  • 是什么阻止您使用onClick button event?
  • 由于我的脚本使用 Time.deltaTime 需要运行每一帧
  • 再一次,是什么让您无法在 onClick 事件中使用它? Time.deltaTime 不是只能从Update 调用的魔法。

标签: c# unity3d


【解决方案1】:

您的意思是您希望它仅在您按住按钮时运行?还是要点击按钮来切换定时器?

我将继续假设您希望切换行为,在这种情况下,您需要在脚本中引用该按钮,并为其添加一个侦听器,该侦听器在单击时切换一个布尔值。

public class YourScript : MonoBehaviour
{
    //Remember to attach your Button in the Inspector
    public Button mybutton;
    private bool toggle = false;

    void Start()
    {
        mybutton.onClick.AddListener(OnClick);
    }

    void OnClick()
    {
        toggle = !toggle;
    }

    void Update()
    {
        if(toggle)
        {
            // do your stuff that you want to do here!
        }
    }
}

Start() 中的代码告诉按钮每次按下时都执行OnClick() 函数,然后在Update() 中,您只有在toggle 为真时才执行您的代码。

【讨论】:

  • 我想在每次点击按钮时调用这个东西,所以它实际上不是一个切换,但这可能仍然有效?
猜你喜欢
  • 1970-01-01
  • 2019-11-24
  • 2022-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-17
  • 1970-01-01
相关资源
最近更新 更多