Holen Sie sich eine Referenz auf ein button-Skript in der Einheit
Das Skript angehängt ist ein Fertighaus, das nicht in einer Szene. Der button hat seinen tag.
Ich versuchte es mit drag und Drop den button in der Inspektor, aber der Motor wird nicht lassen Sie mich. Ich habe versucht, es zu finden, tag für tag, aber ich bekomme eine exception "kann Nicht implizit konvertiert Art UnityEngine.GameObject zu UnityEngine.UI."Und wenn ich werfe, bekomme ich eine exception, die kann ich nicht konvertieren diese Art über die integrierte Konvertierung.
Einige helfen?
Wie bekomme ich eine Referenz auf eine Schaltfläche?
Hier ist der code :
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");
}
}
- Hi, seit Sie used dieser Lösung, warum nicht akzeptieren, dass es als Antwort?
- I"m nicht sicher, dass es funktioniert. Ich habe ein problem, verweisen auf eine Schaltfläche. Wenn es funktioniert werde ich es annehmen. Es ist der Haken, was auf der Links rechts? Können Sie helfen mit dem Verweis auf die Taste?
- Ja, die Häkchen-Sache nicht den upvote oder downvote Bild. Also, wenn du eine Frage stellst und die Antwort, die Sie bekam, nicht arbeiten, nicht schaffen, eine neue mit die nicht arbeiten Antwort. Stattdessen hinterlassen Sie einen Kommentar unter die Antwort. Ich bin sicher, daß diese Leute bereit sind zu helfen, Sie mehr Ihre Fragen zu beantworten. Wenn man Sie ignorieren und verwenden Sie dann Ihren code in eine neue Frage, es bedeutet, dass der code, den Sie gemacht dein problem gelöst und du bist nun ein neues anderes problem.
- Dank an den Rat. Ich werde es in der Zukunft
- Ok, also was ist dein problem?
- Ich kann nicht per drag & drop die Schaltfläche im Bereich "Informationen" und wenn ich es durch den tag ich kann nicht casten von GameObject auf die Schaltfläche
- Ok. Ich Schreibe eine Antwort. Für deine alte Frage , dieser ist, wie man annehmen Antwort.
- Haben Sie den code, wo Sie instanziieren Sie das Fertighaus?
- Ich bin mit dieser Funktion
- 'public GameObject gras;' ' Instantiate (gras, new Vector3 (0, 0, 0), Quaternion.Identität);' . Sie müssen nur per drag-and-drop die vorgefertigten auf dieses Skript im Bereich "Informationen"
Du musst angemeldet sein, um einen Kommentar abzugeben.
Blick auf Ihren code, es gibt ein weiteres problem:
Können Sie cast-Komponente(
Button
) zu GameObject so. Verwenden SieGetComponent
um dieButton
- Komponente aus dem GameObject.Deswegen, weil das das GameObject, das Sie ziehen, zu den shootButton-slot ist nicht eine Taste ist und nicht die Button-Komponente beigefügt, um es. Es müssen die Button-Komponente aus, für die Sie in der Lage sein, um Sie zu ziehen, um die
Button
(shootButton ) slot.Haben Sie eine Schaltfläche erstellen, ziehen Sie die-Taste, um die
shootButton
slot.Können Sie tun, indem Sie zuerst entfernen
dann ziehen Sie die
Button
zu denshootButton
slot:ODER
Holen Sie sich die Referenz aus dem Skript:
Wenn Sie möchten, tun dies durch ein Skript ersetzen
mit