Dziś zastanawiamy się… jak zrobić licznik punktów w Unity? W poprzednim artykule stworzyliśmy królika, który zbiera marchewki. Czas na to aby wyświetlić informację, ile tych marchewek królik posiada. 🙂
Dodanie obiektu Canvas
W Unity mamy możliwość korzystania z obiektu, którego nazwa brzmi Canvas. Jest to pewnego rodzaju „nakładka”, dzięki której możemy definiować z jakich elementów będzie się składał nasz ekran podczas gry i podczas sterowania postacią. To jest element, który świetnie nada się do tego aby wyświetlić licznik punktów – w naszym przypadku licznik zebranych marchewek. Aby dodać obiekt Canvas na liście obiektów, kliknij: PPM -> UI -> Canvas.
W obszarze roboczym powinien pojawić się obiekt przypominający prostokąt, to jest właśnie nasza „nakładka” na ekran. Oddalając widok i zmieniając perspektywę możesz zobaczyć co będzie na nim wyświetlane.
Kolejnym etapem jest dodanie pola tekstowego do widoku. W tym celu przejdź do listy obiektów i znajdź Canvas, a następnie kliknij na nim: PPM -> UI -> Text.
Na środku obiektu powinno pojawić się pole tekstowe. Klikając na typ Text, po prawej stronie pojawią się ustawienia. Proponuję zmienić pozycję i rozmiar pola na zbliżone do moich:
- Pos X: -350
- Pos Y: 210
- Width: 200
- Height: 50
Następnie zmień rozmiar czcionki (Font Size) – ja zdecydowałem się na wartość 40. W polu tekstowym wpisz to, co ma pojawić się na ekranie, np. „carrots: 0”.
Na samej górze ustawień możesz zmienić nazwę pola. W moim przypadku jest to: CarrotsScore.
Po ustawieniu i zapisaniu parametrów, powinieneś zobaczyć na ekranie zdefiniowany napis, a efekt powinien być zbliżony do mojego. 🙂
Czas na skrypt
Kolejnym etapem jest dodanie skryptu odpowiadającego za liczenie marchewek, który uruchomi się podczas kolizji królika z marchewką. Zadaniem skryptu jest zwiększanie licznika (zmiennej int), a następnie zmodyfikowanie tekstu na ekranie.
Poniżej przedstawiam dwie wersje skryptu, które pozornie realizują to samo lecz posiadają pewne różnice. Pierwszy skrypt nie zajmuje miejsca w pamięci dodatkowymi zmiennymi. Drugi skrypt natomiast, nie obciąża tak mocno silnika, ponieważ nie szuka obiektu „CarrotsScore” przy każdej kolizji.
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class CarrotsCollectScript : MonoBehaviour
{
//zadeklarowanie zmiennej licznika marchewek
private int carrotsCollected;
//funkcja wykonywana podczas kolizji królika i marchewki
private void OnTriggerEnter(Collider other)
{
//zwiększenie licznika o 1
carrotsCollected += 1;
//zmiana tekstu obiektu
GameObject.Find("CarrotsScore").GetComponent<Text>().text = "carrots: " + carrotsCollected;
}
}
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class CarrotsCollectScript : MonoBehaviour
{
//zadeklarowanie zmiennej pola tekstowego
private GameObject carrotScore;
//zadeklarowanie zmiennej licznika marchewek
private int carrotsCollected;
//funkcja wywoływana podczas uruchomienia programu
private void Start()
{
//przypisanie do zmiennej wyszukanego obiektu CarrotsScore
carrotScore = GameObject.Find("CarrotsScore");
}
//funkcja wykonywana podczas kolizji królika i marchewki
private void OnTriggerEnter(Collider other)
{
//zwiększenie licznika o 1
carrotsCollected += 1;
//zmiana tekstu obiektu
carrotScore.GetComponent<Text>().text = "carrots: " + carrotsCollected;
}
}
Na koniec dodaj jeden ze skryptów do obiektu królika.
Zakończenie
Jeżeli wykonałeś powyższe kroki poprawnie, powinieneś móc uruchomić program i widzieć efekt swojej pracy! 🤗
Dziękuję Ci za poświęcony czas
Jeżeli chcesz być na bieżąco z artykułami i jesteś ciekawy co będzie dalej, daj lajka na naszym profilu FB, a przede wszystkim zapisz się do newslettera! Nie zapomnij również o naszej, prężnie rozwijającej się, grupie na Discordzie. Spodobał Ci się artykuł? Może zaciekawią Cię inne wpisy na naszym blogu. Pamiętaj, że można nas znaleźć również na YouTube!
Pozdrawiam i życzę miłego dnia! 🙂