[英]How to code an UI button(with Exit funtion) for an Android device in Unity 3D(C#)?
我是 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()檢查器
將以下代碼放入腳本中
public void QuitGame()
{
Application.Quit();
}
將腳本附加到游戲對象,然后使用檢查器中按鈕組件底部的 OnClick 窗口將按鈕分配給方法。
將游戲對象附加到 OnClick 並選擇 QuitGame 函數。
筆記。 這僅在游戲構建中有效,在編輯器中無效。
您混淆了兩種使用按鈕的方法。 如果您遵循@Jack Foulkes 的方法,那么您不需要在外部分配按鈕。 這意味着您不需要以下代碼:
public Button exitButton;
void Start()
{
Button btn = exitButton.GetComponent<Button>();
btn.onClick.AddListener(TaskOnClick);
}
如果您使用上面的代碼,那么您不需要在檢查器中添加OnClick事件偵聽器,因為您已經在代碼中添加了它。
只有您的代碼才能工作。 您得到的是空引用,因為您實際上沒有從檢查器分配exitButton 。 在檢查器中應該是這樣的:檢查器
很簡單,你有訪問修飾符的問題來解決這個問題,只需鍵入
public void TaskOnClick()
{
Application.Quit ();
}
查看此視頻,它將幫助您創建專業的 gui。
創建一個包含以下內容的腳本,然后將其附加到相應的按鈕單擊
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ExitButton : MonoBehaviour {
public void ExitGame()
{
print("Exiting...");
Application.Quit();
}
}
您好,您需要做的就是將此功能設為公開
像這樣:
public void TaskOnClick()
{
Application.Quit();
}
你也可以做一個 if 語句讓它變得更好:)
例如:
public void TaskOnClick()
{
if (Input.GetKeyDown(KeyCode.Escape) // You Can also change the key
{
Application.Quit();
}
}
如果你想減少工作量,請創建一個函數
試試這個:
public void ExitFunction()
{
if (Input.GetKeyDown(KeyCode.Escape) // Or Any Other Key
{
Application.Quit();
Debug.Log("exitgame");
}
}
Public void TaskOnClick()
{
ExitFunction();
}
如果您想制作相同的功能但在鼠標左鍵單擊上,這也是代碼
public void ExitFunction()
{
if (Input.GetMouseButtonDown(0))
{
Application.Quit();
Debug.Log("exitgame");
}
}
public void TaskOnClick()
{
ExitFunction();
}
如果你想用鼠標右鍵
這是答案:
public void ExitFunction()
{
if (Input.GetMouseButtonDown(1))
{
Application.Quit();
Debug.Log("quitgame");
}
}
public void TaskOnClick()
{
ExitFunction();
}
如果你想要它但使用中間按鈕
這是答案:
public void ExitFunction()
{
if (Input.GetMouseButtonDown(2))
{
Application.Quit();
Debug.Log("quitgame");
}
}
public void TaskOnClick()
{
ExitFunction();
}
完整的最佳代碼:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class ExitButton : MonoBehaviour
{
public void ExitFunction()
{
if (Input.GetMouseButtonDown(0))
{
Application.Quit();
Debug.Log("quitgame");
}
}
public void TaskOnClick()
{
ExitFunction();
}
}
課程總結:
-- 有時在我們需要的時候使用public ,例如當我們使用GameObjects和Transforms時。
-- if () 語句用於使 IDE 理解非常具體的對象,例如Do an action when .... 被按下。
謝謝你。
希望這有幫助
埃亞德
專業的游戲開發者和前端 Web 開發者
你在檢查器中鏈接你的按鈕嗎?
編輯。 我認為這也應該改變:
void TaskOnClick()
{
Debug.Log("You touched this button.");
Application.Quit ();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.