Button Funkcja ClickOn() dodawanie do listy przez skrypt

Programowanie w Unity.

Button Funkcja ClickOn() dodawanie do listy przez skrypt

Postprzez avengerarrow » 21 Lis 2018, 21:36

W jaki sposób mogę dodać tak jak na zdjęciu Obiekt i funkcje ?

https://ibb.co/hiz0SA

Player to Object. A PlayerTurn.ButtonMove to funkcja w załączonym skrypcie do tego obiektu.
Jak coś takiego można w kodzie napisać?
Napisałem coś takiego ale nie wiem co zrobić w pętli foreach. Co umieścić w nawiasach button.onClick.AddListener();

Kod: Zaznacz wszystko
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Buttons : MonoBehaviour {

    List<Button> buttons = new List<Button>();

   // Use this for initialization
   void Start ()
   {
       GetButtons();
   }

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

    private void GetButtons()
    {
        GameObject[] objects = GameObject.FindGameObjectsWithTag("ActionButton");

        for (int i = 0; i < objects.Length; i++)
        {
            buttons.Add(objects[i].GetComponent<Button>());
        }
    }

    void AddListeners()
    {
        foreach (Button button in buttons)
        {
            button.onClick.AddListener(); ????
        }
    }
}
avengerarrow
 
Posty: 5
Rejestracja: 21 Lis 2018, 21:10
Has thanked: 0 time
Been thanked: 0 time

Re: Button Funkcja ClickOn() dodawanie do listy przez skrypt

Postprzez Palanthir » 21 Lis 2018, 21:44

Możesz tam umieścić co ci się podoba według manula:
https://docs.unity3d.com/ScriptReferenc ... Click.html
Palanthir
 
Posty: 97
Rejestracja: 31 Sie 2017, 16:13
Has thanked: 0 time
Been thanked: 0 time

Re: Button Funkcja ClickOn() dodawanie do listy przez skrypt

Postprzez avengerarrow » 21 Lis 2018, 21:55

Czytam ale jakoś tego nie rozumiem jak mogę umieścić funkcję ale danego obiektu
avengerarrow
 
Posty: 5
Rejestracja: 21 Lis 2018, 21:10
Has thanked: 0 time
Been thanked: 0 time

Re: Button Funkcja ClickOn() dodawanie do listy przez skrypt

Postprzez Palanthir » 21 Lis 2018, 22:45

Musisz tam umieścić wskaźnik do danej metody, z tego co widzę w manualu to można wrzucić samą metodę.
Możesz to zrobić na rożne sposoby, nie wiem jak masz napisany kod, skorzystaj z jakieś referencji do obiektu PlayerTurn.
Palanthir
 
Posty: 97
Rejestracja: 31 Sie 2017, 16:13
Has thanked: 0 time
Been thanked: 0 time

Re: Button Funkcja ClickOn() dodawanie do listy przez skrypt

Postprzez Hostur » 22 Lis 2018, 16:57

samo dopisanie delegatu to
Kod: Zaznacz wszystko
// Jeśli bezparametrowy void
button.onClick.AddListener(Metoda);
// anonimowo
button.onClick.AddListener(() =>
{
 .. tutaj coś robisz
});
// lub asynchronicznie
button.onClick.AddListener(async() => await
{
  await ...
});
//lub
button.onClick.AddListener(async() => await MetodaAsynchroniczna());


To co napisałeś w swoim kodzie nie ma jak sensownie działać, chyba że wszystkim przyciskom chcesz dodać dokładnie tę samą funkcjonalność
ale wtedy

Kod: Zaznacz wszystko
foreach(GameObject obj in GameObject.FindGameObjectsWithTag("ActionButton"))
{
  Button button = obj.GetComponent<Button>();
  if(button != null)
  {
    button.onClick.AddListener(TwojaMetoda);
  }
}
Hostur
 
Posty: 699
Rejestracja: 05 Sie 2015, 07:36
Has thanked: 0 time
Been thanked: 0 time


Wróć do Skrypty

Kto jest na forum

Użytkownicy przeglądający to forum: Brak zarejestrowanych użytkowników oraz 2 gości

cron