GUI Button

Tworzenie oprogramowania dla IOS i Android.

Re: GUI Button

Postprzez Jarkovsky » 09 Wrz 2016, 09:55

Dobrze zrozumiałeś, lecz sobie poradziłem.
Mam inny problem, chciałem zrobić przycisk taki testowy aby on był obsługiwany przez skrypt, wyczytałem w manualu że robi się to metodą Input.GetButton, więc przypisałem do tej funkcji przycisk "test" oraz zrobiłem Debug.Log aby sprawdzić czy działa, wyskoczyło że przycisk jest nie zainstalowany więc go dodałem w Edit->Project Settings->Input. Dodałem tam przycisk "test" lecz nic się nie dzieje co może być tym spowodowane?


EDIT: Poradziłem sobie z obsługą przycisku, lecz dlaczego jak mam przycisk nowa gra oraz wyjdź to przycisk 'test' reaguje także na nowa gra?

EDIT2: Rozwiązanie tkwi w tym że ustawiłem mouse 0 - left przycisk myszy, dałem na mouse 1 i jest dobrze ale tylko na PC, ponieważ teraz przycisk nie działa na androidzie, jakieś propozycje jak to rozwiązać? ;)
Jarkovsky
 
Posty: 23
Rejestracja: 06 Wrz 2016, 14:29
Has thanked: 0 time
Been thanked: 0 time

Re: GUI Button

Postprzez Jarkovsky » 09 Wrz 2016, 17:15

Może jakiś odsyłacz do manaula gdzie jest pokazane jak zrobić button z jego obsługą w C#, aby obsługiwał się sam przycisk a nie cała scena ;)
Jarkovsky
 
Posty: 23
Rejestracja: 06 Wrz 2016, 14:29
Has thanked: 0 time
Been thanked: 0 time

Re: GUI Button

Postprzez Marcin » 09 Wrz 2016, 17:31

Co rozumiesz przez "aby obsługiwał się sam przycisk a nie cała scena"?
Marcin
 
Posty: 293
Rejestracja: 25 Lip 2016, 10:44
Has thanked: 0 time
Been thanked: 0 time

Re: GUI Button

Postprzez Jarkovsky » 09 Wrz 2016, 17:44

Pisałem u góry, dodałem przycisk oraz kawałek kodu:
Kod: Zaznacz wszystko
        if (Input.GetButton("test"))
        {
            Debug.Log("sssd");
        }

skrypt się wykonuje gdzie bym nie kliknął. A chciałbym aby się wykonywał tylko przy kliknięciu w przycisk.
Jarkovsky
 
Posty: 23
Rejestracja: 06 Wrz 2016, 14:29
Has thanked: 0 time
Been thanked: 0 time

Re: GUI Button

Postprzez Marcin » 09 Wrz 2016, 18:52

Ok, nie wiem tylko za bardzo na którym poziomie operujesz. To, co ustawiłeś w opcjach (dodałeś nowy przycisk) to wirtualne przyciski. Tym przyciskiem może być cokolwiek - klawisz na klawiaturze czy jakiś przycisk myszki lub joysticka. Działa to na każdej scenie. Wystarczy tylko, że ustawione jest odpowiednie mapowanie np. przy uruchamianiu builda na PC jest opcja mapowania przycisków. Przyciski na ekranie, czyli User Interface, to druga sprawa. Przycisk działa wtedy, gdy jest kliknięty. Ty jak sądzę próbujesz w jakiś sposób połączyć te dwa systemy. Nie wiem do końca co chcesz osiągnąć i czy jest to możliwe w taki sposób, jaki chcesz to zrobić.
Marcin
 
Posty: 293
Rejestracja: 25 Lip 2016, 10:44
Has thanked: 0 time
Been thanked: 0 time

Re: GUI Button

Postprzez Jarkovsky » 10 Wrz 2016, 08:37

Nie chce nic łączyć żadnych dwóch sposobów, chce zrobić zwyczajny przycisk i jak się w niego kliknie obsłuży go jakiś skrypt.
Jarkovsky
 
Posty: 23
Rejestracja: 06 Wrz 2016, 14:29
Has thanked: 0 time
Been thanked: 0 time

Re: GUI Button

Postprzez Marcin » 10 Wrz 2016, 10:57

Możesz to zrobić na kilka sposobów. Mniej uniwersalne będzie stworzenie skryptu, który by trzymał referencję nadany przycisk. Skrypt ten rejestrowałby się wtedy do zdarzenia "onClick" przycisku. Wtedy, w momencie kliknięcia wywoła się jakaś funkcja. Bardziej uniwersalne może być stworzenie jakiejś klasy wirtualnego przycisku oraz prosty "InputManager". Wirtualny przycisk dodajesz jako nakładkę na zwykły przycisk oraz dodajesz zmienną nazwy przycisku. W momencie kliknięcia na przycisk wysyła on informację o tym do "InputManager", a on ustawia sobie jakiś stan, który można podejrzeć metodą "GetButton()" czy coś lub wysyła zdarzenia o kliknięciu do zarejestrowanych odbiorców (możesz zrobić jak wolisz).
Marcin
 
Posty: 293
Rejestracja: 25 Lip 2016, 10:44
Has thanked: 0 time
Been thanked: 0 time

Re: GUI Button

Postprzez Jarkovsky » 10 Wrz 2016, 13:59

Utworzyłem Button w UI, dodałem do niego mój skrypt:
Kod: Zaznacz wszystko
    void Update()
    {
        if (Input.GetButtonDown("testt"))
        {
            Debug.Log("dasd");
        }
    }


Gdy klikam w button dodaje mi Log "dasd" oraz gdy klikam gdziekolwiek na scenie także mi dodaje "dasd" o to mi chodzi dlaczego tak się robi :)
Jarkovsky
 
Posty: 23
Rejestracja: 06 Wrz 2016, 14:29
Has thanked: 0 time
Been thanked: 0 time

Re: GUI Button

Postprzez Jarkovsky » 10 Wrz 2016, 14:02

Oczywiście utworzyłem testt w InputManager.
Jarkovsky
 
Posty: 23
Rejestracja: 06 Wrz 2016, 14:29
Has thanked: 0 time
Been thanked: 0 time

Re: GUI Button

Postprzez Marcin » 10 Wrz 2016, 15:00

Jarkovsky napisał(a):Utworzyłem Button w UI, dodałem do niego mój skrypt:
Kod: Zaznacz wszystko
    void Update()
    {
        if (Input.GetButtonDown("testt"))
        {
            Debug.Log("dasd");
        }
    }


Gdy klikam w button dodaje mi Log "dasd" oraz gdy klikam gdziekolwiek na scenie także mi dodaje "dasd" o to mi chodzi dlaczego tak się robi :)


Tak jak mówiłem, łączysz dwie odrębne rzeczy. Przyciski oraz osie, które dodajesz w InputManager (opcjach projektu), to wirtualne przyciski. Nie ma ich na scenie. Jeżeli mamy grę np. FPS, to jest w niej kilka takich wirtualnych przycisków np. WSAD do poruszania się, F jako użycie czegoś, SPACJA to skok itd. Przycisków tych nie ma na ekranie w postaci GUI (Twój button, do którego dodajesz swój skrypt). Ty właśnie coś takiego dodałeś jako "testt" w InputManager. Pozwól, że lekko zmodyfikuję Twój skrypt. Zamiast przycisku "testt" dodajmy do InputManager przycisk "strzał". Zmieńmy też trochę sam skrypt:
Kod: Zaznacz wszystko
    void Update()
    {
        if (Input.GetButtonDown("strzał"))
        {
            Debug.Log("Strzelam z broni!");
        }
    }

Rozumiesz już, dlaczego warunek ten jest prawdziwy niezależnie od tego, czy klikasz w przycisk czy gdziekolwiek indziej?
Marcin
 
Posty: 293
Rejestracja: 25 Lip 2016, 10:44
Has thanked: 0 time
Been thanked: 0 time

PoprzedniaNastępna

Wróć do iPhone i Android

Kto jest na forum

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