[英]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。 您必須使用GetComponent
從GetComponent
獲取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.