【问题标题】:Unity - Gui Button issues (Android)Unity - Gui 按钮问题 (Android)
【发布时间】:2015-06-09 23:13:16
【问题描述】:

我对 Unity 还很陌生,我正在为 android 创建我的第一个游戏,作为一种游戏。我有这个游戏,你可以通过按下按钮来使用提升。玩家可以在此过程中获得多个提升。

此刻,我正在使用此代码来使用提升:

public void OnGUI()
     {
         if (GUI.RepeatButton(new Rect(20, Screen.height - 150, Screen.width/10, Screen.width/10), boostButtonIcon))
         {
             pressedButton = true;
             //do boost stuff

         }
         else
         {
             pressedButton = false;
         }
     }

这很好用,除非我在手机上测试它,我收集了 4 个提升,所有提升将一次性使用。

我也尝试过 GUI.Button 而不是 GUI.RepeatButton,但如果我使用它,则没有任何效果。

我做错了什么还是有更好的方法?

【问题讨论】:

  • 基于 OnGUI 的 UI 在文档中被标记为“旧版”。较新的 uGUI 更易于使用。 Unity 教程和“现场培训”视频非常有用。 (不过,GUIText 仍然很方便。)

标签: c# android button unity3d


【解决方案1】:

这很正常,因为每帧都会调用OnGUI。您应该检查最后一个值是否为真,这意味着用户没有按下按钮,只是按住它。试试这个:

if (GUI.RepeatButton(new Rect(20, Screen.height - 150, Screen.width/10, Screen.width/10), boostButtonIcon))
{
     if (!pressedButton)
     {
         //do boost stuff
     }
     else pressedButton = true;
}

希望我能帮上忙!

【讨论】:

  • 啊不幸的是,这不起作用,我所有的提升仍然可以一口气使用!
  • 对不起,搞砸了。现在应该修好了。
  • 不,没有变化,我所有的提升仍然可以一次性使用:/
  • 啊哈!我知道了!我将 RepeatButton 更改为 Button,并检查了我的一些 boost 代码(此处代码链接:codepad.org/KYmyBUvD)感谢您的帮助!
【解决方案2】:

我找到了一次性使用所有提升的原因,我使用的是 RepeatButton 而不是 Button。虽然起初这不起作用,但我将它与 (&& boosts > 0) 结合使用,现在它可以完美运行:)

    public void OnGUI() 
    {
                if (GUI.Button(new Rect(20, Screen.height - 150, Screen.width/10, Screen.width/10), boostButtonIcon) && boosts > 0)
                {
                    useBoostSound.Play();   
                    rigidbody.AddForce(boostVelocity, ForceMode.VelocityChange);    
                    boosts -=1;
                } 
    }

【讨论】:

    猜你喜欢
    • 2014-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    相关资源
    最近更新 更多