【问题标题】:How to code an UI button(with Exit funtion) for an Android device in Unity 3D(C#)?如何在 Unity 3D(C#)中为 Android 设备编写 UI 按钮(带有编辑功能)?
【发布时间】:2018-10-20 21:13:09
【问题描述】:

我是 Unity 3D 的初学者。我正在编写一个 android 应用程序,我的开始菜单有一个退出按钮。我的想法很简单:用户按下退出按钮后,应用程序将关闭。

我知道 Application.Quit() 用于退出应用程序。但我只是不知道如何检测用户对按钮的触摸并返回 application.quit() 方法。我应该使用 button.onclick 或 input.getTouch 之类的东西吗?

这是我的代码:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;

    public class ExitButton : MonoBehaviour {

    public Button exitButton;

    void Start()
    {
        Button btn = exitButton.GetComponent<Button>();
        btn.onClick.AddListener(TaskOnClick);
    }

    void TaskOnClick()
    {
        Application.Quit ();
        Debug.Log("You touched this button.");
    }
    }

在我尝试播放我的应用后,我收到此错误:

NullReferenceException: Object reference not set to an instance of an object
ExitButton.Start()

而且我似乎无法从用户触摸按钮获得信号。

有人可以帮我吗?

我已在检查器中链接我的按钮,但我无法找到我的函数名称:TaskOnClick() Inspector

【问题讨论】:

  • 向我们展示您尝试实现此功能的尝试,以及您遇到的任何问题。按照目前的情况,只需访问 Google 即可回答此问题。
  • 我看了很多视频,但找不到符合我需求的视频。

标签: c# unity3d


【解决方案1】:

将以下代码放入脚本中

public void QuitGame()
{
    Application.Quit();
}

将脚本附加到游戏对象,然后使用检查器中按钮组件底部的 OnClick 窗口将按钮分配给方法。

将游戏对象附加到 OnClick 并选择 QuitGame 函数。

注意。这仅在游戏构建中有效,在编辑器中无效。

【讨论】:

  • 非常感谢,它可以在我的手机上使用。但是我有一个问题:当我在我的计算机上玩 Unity 3D 上的应用程序时,仍然会出现错误“NullReferenceException: Object reference not set to an instance of an object ExitButton.Start()”,但由于退出按钮正在工作我的安卓手机。是不是说明这个错误不重要?(不用提防)
  • 查看@ZayedUpal 的回复,他解释得很好。
【解决方案2】:

您混淆了两种使用按钮的方法。 如果您遵循@Jack Foulkes 的方法,那么您不需要在外部分配按钮。这意味着您不需要以下代码:

public Button exitButton;

void Start()
{
    Button btn = exitButton.GetComponent<Button>();
    btn.onClick.AddListener(TaskOnClick);
}

如果您使用上述代码,则无需在检查器中添加 OnClick 事件侦听器,因为您已经在代码中添加了它。
只有您的代码可以工作。您得到的是空引用,因为您实际上没有从检查器中分配 exitButton 。 在检查器中应该是这样的: inspector

【讨论】:

  • "你得到的是空引用,因为你实际上没有从检查器中分配 exitButton。"是的,我犯了这个愚蠢的错误。非常感谢扎耶德。它现在有效。! :)
  • 我的荣幸:)。如果您支持它,那将是一个很大的帮助:P。
  • @GarethLam 如果答案正确,您应该接受。
【解决方案3】:

简单地说,你有访问修饰符的问题来解决这个问题

public void TaskOnClick()
{
 Application.Quit ();
}

观看此视频,它将帮助您创建专业的 gui。

How to make a professional GUI using unity

【讨论】:

    【解决方案4】:

    使用以下内容创建一个脚本,然后将其附加到相应的按钮单击

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class ExitButton : MonoBehaviour {
        public void ExitGame()
        {
            print("Exiting...");
            Application.Quit();
        }
    }
    

    【讨论】:

      【解决方案5】:

      您是否在检查器中链接您的按钮?

      编辑。 我认为这也应该改变:

      void TaskOnClick()
      {
           Debug.Log("You touched this button.");
           Application.Quit (); 
      }
      

      【讨论】:

      • 是的,我在检查器中链接了我的按钮,但在“On Click ()”部分中找不到我的函数名称(TaskOnClick())。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多