• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dostęp do zmiennej z innego skryptu oraz szukanie nieistniejących obiektów

VPS Starter Arubacloud
0 głosów
487 wizyt
pytanie zadane 4 listopada 2018 w OpenGL, Unity przez Yashe Dyskutant (7,720 p.)

Witam serdecznie,

Mam problem z zliczaniem punktów w prostej grze. Mianowicie, gracz ma pod klawiszami A/S/D "pociski" w kształcie kolejno, kwadratu, trójkąta i kółka. Z prawej strony tworzone są takie same typy przeciwników (Kwadrat, Trójkąt itd.). 
Przeciwnicy mają odpowiadające im tagi, czyli również kwadrat, trójkąt i kółko. Gdy pocisk kwadrat uderzy w takiego samego przeciwnika to obiekty są usuwane, jeśli nie - przegrywa. 

Jak mam zliczać punkty ? Nie mogę zrobić prostej publicznej zmiennej z inkrementacją wyniku gdyż, każdy następny obiekt ma tą zmienną ustawioną na 0. Później znów następuje kolizja wynik ma wartość 1, lecz kolejny obiekt ma zmienną wynik na 0.

Do tego potrzebuje mieć dostęp do tej zmiennej z innego skryptu. Ma ktoś jakiś pomysł ? 

 

using UnityEngine;
using UnityEngine.SceneManagement;

public class Enemy : MonoBehaviour {

    public float speed;
    public int score = 0;

    private void Update()
    {
        transform.Translate(Vector2.left * speed * Time.deltaTime);
    }

    void OnTriggerEnter2D(Collider2D other)
    {
        if (other.CompareTag("Player"))
        {
            SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
        }

        if (other.tag == gameObject.tag){
            Destroy(other.gameObject);
            Destroy(gameObject);
            //score++;
        }
        else{
            SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
        }

    }
      
}


 

1 odpowiedź

0 głosów
odpowiedź 7 listopada 2018 przez Borys Kaczmarek Użytkownik (630 p.)
A nie prościej stworzyć oddzielny skrypt (np. "ScoreManager") i tam stworzyć publiczną zmienną "score"? Mógłbyś wtedy z każdego innego skryptu korzystać ze zmiennej "score" i ta sama zmienna zapisywałaby się i nie zmieniała wartości na zero jak w przypadku przypisania tej zmiennej do każdego oddzielnego skryptu przypisanego do wroga.
komentarz 17 listopada 2018 przez Yashe Dyskutant (7,720 p.)

Problem rozwiązałem deklarując, że jest to zmienna statyczna [static]. (zanim napisałeś sad)
Być może komuś pomoże ten temat wink

Podobne pytania

0 głosów
1 odpowiedź 252 wizyt
pytanie zadane 5 czerwca 2021 w C# przez Michał Stankiewicz Nowicjusz (120 p.)
0 głosów
1 odpowiedź 385 wizyt
pytanie zadane 1 lipca 2016 w C# przez Adrian1999 Nałogowiec (34,570 p.)

92,974 zapytań

141,938 odpowiedzi

321,180 komentarzy

62,301 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...