Strona główna Programowanie Jak zrobić licznik punktów w Unity?

Jak zrobić licznik punktów w Unity?

przez Krzysiu Weiss

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.

unity - dodanie obiektu 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.

unity - canvas

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.

unity - dodanie pola tekstowego do canvas

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.

unity - szczegóły pola tekstowego canvas

Po ustawieniu i zapisaniu parametrów, powinieneś zobaczyć na ekranie zdefiniowany napis, a efekt powinien być zbliżony do mojego. 🙂

unity - canvas z polem tekstowym

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! 🤗

unity - zbieranie marchwi z licznikiem punktów

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! 🙂

dziękuję
3.7 6 votes
Oceny

Powiązane wpisy

guest
2 komentarzy
Inline Feedbacks
View all comments

Strona wykorzystuje cookies i przetwarza dane zgodnie z zasadami opublikowanymi w Polityce Prywatności. Jeżeli nie wyrażasz zgody na przetwarzanie danych, zmień ustawienia swojej przeglądarki. Wybierając "OK", zgadzasz się na warunki przetwarzania. OK Więcej