NGUI_ComAngle_v2.docx

(560 KB) Pobierz

To, co się nauczyliśmy wczoraj

 

NGUI -> Create a New UI ->domyślne ustawienia -> Create Your UI. Pojawiają się nam anchor , panel. Dodajemy NGUI -> Create widget. Wybieramy atlas I font z dostępnych zasobów NGUI.  Template -> button. Potwierdzamy dodanie. Następnie tworzymy nowy skrypt C# w którym deklarujemy zmienne

public UIPanel panel;

public UIButton przycisk;

public UILabel napis;

Następnie tworzymy pusty GameObjcet do którego przypisujemy napisany skrypt. Następnie do poszczególnych pól widocznych w Inspectorze przypisujemy rzeczywiste obiekty naszego NGUI. Label jest brany z przycisku.

 

1.png

 

Następnie tworzymy prywatną metode void ButtonClicked, w której wyświetlamy  konsoli napis Klik. Zapisujemy zmiany. Następnie wybieramy button

 

2.png

W inspektorze pojawia się nam komponent UIButton Message (scripts). Do pola Target przypisjem nasz GameObject. Następnie w polu  Function name wpisaliśmy nazwę naszej prywatnej metody.

 

3.png

Po uruchomieniu i kliknięciu przycisku w Consoli pojawia się nam napis KLIK. Następnie w skrypcie zadeklarowaliśmy zmianę tekstu na przycisku, z domyślnego button na zmienione.

 

4.png

Następnie tworzymy nowy przycisk, analogicznie jak opisaliśmy to wyżej. W skrypcie dodaliśmy kolejną ziemną UIPanel panel2. Następnie w metodzie void Start wyłączamy panel 2 funkcją NGUITools.SetActive(panel2.gameObject, false); W gameObject przypisujemy do slotu panel2 nowo utworzony panel.

 

Następnie w skrypcie piszemy kod na to, a by po kliknięciu przycisku 1 znikł, zaś drugi ma się pojawić.

 

5.png

 

 

 

 

 

Utrwalnie wiedzy

 

 

 

 

Dzięki wczorajszym wskazówkom, NGUI stało się dla nas trochę bardziej przyjazne. Postanowiliśmy samodzielnie, bez tutoriali spróbować stworzyć jakieś przykładowe NGUI, które będzie pobierało i zapisywało dane.

 

Kod pisany szybko, więc nie ma pewnych zabezpieczeń, np. brak try-catch czy opcji tworzenia pliku dane.txt. Są też mieszane nazwy polskie i angielskie.  Nazwy często nic nie mówią. Kod oczywiście jest pełen rozwiązań, które można było zrobić inaczej, lecz zależało nam przede wszystkim na poprawnym funkcjonowaniu naszego przykładowego NGUI. NGUI to pozwala na dodawanie osób do bazy (plik tekstowy, który musi być wcześniej ręcznie utworzony). Sprawdza czy wszystkie dane są wpisane. Można także odczytać zawartość tego pliku i w niezbyt elegancki sposób to wyświetlić.

 

Screeny z działania są poniżej. Kod źródłowy można znaleźć pod obrazkami.

 

Główne menu

6.jpg

 

 

 

Po kliknięciu ADD

 


7.jpg
Po niepodaniu kompletnych danych


8.jpg

 

 

 

 

Po podaniu kompletnych danych

9.jpg

 

Po kliknięciu BROWSE w głównym oknie

10.jpg

 

 

 

 

 

 

 

 

                           

             


 

 

Kod:

using UnityEngine;

using System.Collections;

using System.IO;

 

public class nowy : MonoBehaviour {

             

              public UIButton button1, button2,button3, button4, button5;

              public UIPanel panel1, panel2, panel3, panel4;

              public UIInput imie, nazwisko, wiek;

              public UILabel nazwa, wczytane;

              public string plik="dane.txt";

 

              void Start () {

                            NGUITools.SetActive(panel2.gameObject,false);

                            NGUITools.SetActive(panel3.gameObject,false);

                            NGUITools.SetActive(panel4.gameObject,false);

              }

 

              private void Button1Clicked()

              {

                            NGUITools.SetActive(panel1.gameObject,false);

                            NGUITools.SetActive(panel2.gameObject,true);

                           

              }

             

              private void Save()

              {

                            if (imie.text=="" || nazwisko.text=="" || wiek.text=="") nazwa.text="Nie podano kompletnu danych";

                            else

                            {

                                          nazwa.text ="Dane poprawnie zapisane";

                                          if (File.Exists(plik))

                                          {

                                                        using (StreamWriter sw = new StreamWriter(plik, true))

                                                        {

                                                                      sw.Write(imie.text);

                                                                      sw.Write (";");

                                                                      sw.Write(nazwisko.text);

                                                                      sw.Write (";");

                                                                      sw.Write(wiek.text);

                                                                      sw.Write (";");

                                                                      sw.WriteLine ();

                                                        }

                                          }

                            }

                            NGUITools.SetActive(panel3.gameObject,true);

              }

              private void OK()

              {

                            if (nazwa.text =="Dane poprawnie zapisane")

                            {

                                         

                                          NGUITools.SetActive(panel2.gameObject,false);

                                          NGUITools.SetActive(panel1.gameObject,true);

                                          imie.text="";

                                          nazwisko.text="";

                                          wiek.text="";

                            }

                            NGUITools.SetActive(panel3.gameObject,false);

              }

             

              private void Load()

              {

                            NGUITools.SetActive(panel1.gameObject,false);

                            NGUITools.SetActive(panel4.gameObject,true);

                            if (File.Exists(plik))

                            {

                                          using (StreamReader sr = new StreamReader(plik))

                                          {

                                                        string [] dane;

                                                        while(sr.Peek() >0)

                                                        {

                                                                      dane=sr.ReadLine().Split (';');

                                                                      wczytane.text+=dane[0]+" ";

                                                                      wczytane.text+=dane[1]+" ";

                                          ...

Zgłoś jeśli naruszono regulamin