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

Unity Początkujący Błąd

Object Storage Arubacloud
0 głosów
293 wizyt
pytanie zadane 22 kwietnia 2020 w C# przez Rosool Użytkownik (660 p.)
using UnityEngine;
using UnityEngine.UI;

public class gra : MonoBehaviour
{
    public Text text;

    // Start is called before the first frame update
    public class Karta
    {
       
        public int kolor;
        public int wartosc;
        string nazwa;
      
        public  void Przypisz(int w, int k)
        {
            int n = w;
            kolor = k;
            wartosc = w;
            if (n < 11)
            {
                nazwa = n.ToString();
            }
            else if (n == 11)
            {
                nazwa = "Dupek";
            }
            else if (n == 12)
                nazwa = "Dama";
            else if (n == 13)
                nazwa = "Król";
            else if (n == 14)
                nazwa = "AS";
           
    
        }
    }

    public Karta[] karty = new Karta[52];
 
    void Start()
    {

        int x = 0;
        for (int i=2;i<=14 ;i++)
        {
            for(int y=1;y<=4;y++)
            {

                 karty[x].Przypisz(i,y);
               
                x++;
            }
        }
        text.text = x.ToString();
    }

    // Update is called once per frame
    void Update()
    {
        
    }
   
}

Witam wiem że kod nie perfekcyjny ale mi nie dziala i nie wiem z jakiego powodu a męczę sie już z tym godzine 

Błąd w kompilatorze nie wyskakuje a dopiero w unity o tej tresci:NullReferenceException: Object reference not set to an instance of an object  gra.Start () (at Assets/karty/gra.cs:54)
Dotyczy on tej linii: karty[x].Przypisz(i,y);

Prosze o pomoc 

I z góry dzieki oraz pozdrawiam

 

1 odpowiedź

0 głosów
odpowiedź 22 kwietnia 2020 przez Adrian1999 Nałogowiec (34,570 p.)
wybrane 23 kwietnia 2020 przez Rosool
 
Najlepsza
Stworzyłeś tablicę która ma miejsce na 52 obiekty, każdy obiekt jest zmienną referencyjną, nie wartościową. Także w przypadku kiedy chcesz działać na jakimś obiekcie pierw musisz go zaalokować. W prosty sposób, w pierwszej kolejności, przed przypisaniem napisz "karty[x] = new Karta();" Powinno zadziałać ;)

EDIT
Tak się jeszcze zapytam, czy funkcja przypisz jest konieczna? Opcja konstruktora wydaje mi się lepsza, dodatkowo polecałbym używać właściwości (props), lub tej bardziej czasochłonnej wersji czyli tworzenia zmiennych prywatnych oraz funkcji które zezwalają je edytować.
komentarz 23 kwietnia 2020 przez Rosool Użytkownik (660 p.)
Dzięki wielkie chciałem na konstruktorze ale nie wiedziałem jak go zadeklarowac gdy tworzę tablice klas dzięki wielki napewno zmienię na konstruktor

Podobne pytania

–1 głos
1 odpowiedź 428 wizyt
pytanie zadane 13 maja 2018 w OpenGL, Unity przez niezalogowany
0 głosów
1 odpowiedź 1,556 wizyt
pytanie zadane 25 lipca 2019 w Python przez Shitkariu Nowicjusz (140 p.)
0 głosów
2 odpowiedzi 114 wizyt
pytanie zadane 4 lipca 2019 w C i C++ przez colddog Nowicjusz (140 p.)

92,580 zapytań

141,432 odpowiedzi

319,665 komentarzy

61,965 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...