簡體   English   中英

從Unity中的腳本獲取對按鈕的引用

[英]Get a reference to a button from script in Unity

該腳本附加到不在場景中的預制件。 按鈕有標簽。

我試着在檢查器中拖放按鈕,但引擎不會讓我。 我嘗試通過標簽找到它,但我得到一個異常“不能隱式轉換類型UnityEngine.GameObject到UnityEngine.UI.Button”,當我轉換時,我得到一個異常,我無法通過內置轉換轉換這些類型。 一些幫助? 如何獲得對按鈕的引用? 這是代碼:

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

public class TankShooting : MonoBehaviour {

    private Transform ShootingCameraTransform;
    private PlayerTankMovement playerTankMovement;
    public Button shootButton;


    // Use this for initialization
    void Start () {

        shootButton = GameObject.FindGameObjectWithTag ("ShootButton") as Button;
        shootButton.onClick.AddListener ((UnityEngine.Events.UnityAction)this.OnShootButtonClick);

        playerTankMovement = GetComponent<PlayerTankMovement> ();
        Transform t = transform;
        foreach (Transform tr in t)
        {
            if (tr.tag == "ShootingCamera") 
            {
                ShootingCameraTransform = tr.transform;
            }
        }
    }

    // Update is called once per frame
    void Update () {

    }

    public void OnShootButtonClick()
    {
        Debug.Log ("Success");

    }
}

查看您的代碼,還有另一個問題:

shootButton = GameObject.FindGameObjectWithTag ("ShootButton") as Button;

你不能像這樣將組件( Button )強制轉換為GameObject。 您必須使用GetComponentGetComponent獲取Button組件。

我無法在檢查器中拖放按鈕,當我通過標簽找到它時,我無法將其從GameObject轉換為Button

那是因為您拖動到shootButton插槽的GameObject不是Button或者沒有附加Button組件。 必須有Button組件才能將其拖動到Button (shootButton)插槽。

您必須創建一個Button然后將該Button拖動到shootButton插槽。

你可以先刪除

shootButton = GameObject.FindGameObjectWithTag ("ShootButton") as Button;
shootButton.onClick.AddListener ((UnityEngine.Events.UnityAction)this.OnShootButtonClick);

然后將Button拖到shootButton插槽:

在此輸入圖像描述

要么

從腳本中獲取引用:

如果要從腳本執行此操作,請替換

shootButton = GameObject.FindGameObjectWithTag ("ShootButton") as Button;
shootButton.onClick.AddListener ((UnityEngine.Events.UnityAction)this.OnShootButtonClick);

shootButton = GameObject.FindGameObjectWithTag("ShootButton").GetComponent<Button>();
shootButton.onClick.AddListener(() => OnShootButtonClick());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM