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

Nieznany błąd w kodzi

Object Storage Arubacloud
0 głosów
300 wizyt
pytanie zadane 6 sierpnia 2022 w C# przez IsaacVV Początkujący (350 p.)
edycja 6 sierpnia 2022 przez ScriptyChris

Witam, próbuję stworzyć grę survival, dopiero uczę się programować znallazłem na yt poradniki natomiast u mnie pojawia się błąd który w filmie nie wyskakuje, przeszukałem cały kod już wiele razy.
 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Ekwipunek : MonoBehaviour
{
    public List<Przedmiot> listaPosiadanychPrzedmiotow = new List<Przedmiot> ();
    bool czyWyswietlicEkwipunek;
    public GUISkin skin;
    int iloscSlotowX;
    int iloscSlotowY;

    void Start ()
    {
        czyWyswietlicEkwipunek = false;
        iloscSlotowX = 5;
        iloscSlotowY = 4;
    }
    
    void Update ()
    {
        if(Input.GetKeyUp (KeyCode.I))
        {
            czyWyswietlicEkwipunek = !czyWyswietlicEkwipunek;
        }

    }
    void OnGUI ()
    {
        if(czyWyswietlicEkwipunek == true)
        {
            WyswietlEkwipunek ();
        }
    }
    void WyswietlEkwipunek()
    {
        for(int x = 0; x < iloscSlotowX; x++)
        {
            for(int y = 0; y < iloscSlotowY; y++)
            {
                Rect polozenieSlotow = new Rect ((Screen.width * 0.15f) + (x * Screen.width * 0.075f), Screen.height * 0.25f + (y * Screen.height * 0.13f), Screen.width * 0.07f, Screen.height * 0.12f);
                GUI.Box(polozenieSlotow, "", skin.GetStyle("SlotEkwipunku"));
            }
        }
    }
}



gdy włączę unity i włączę ten "ekwipunek" spamuje bez końca takim błędem.

NullReferenceException: Object reference not set to an instance of an object
Ekwipunek.WyswietlEkwipunek () (at Assets/Paski/Skrypty/Ekwipunek/Ekwipunek.cs:42)
Ekwipunek.OnGUI () (at Assets/Paski/Skrypty/Ekwipunek/Ekwipunek.cs:32)

Wydaje mi się że void mimo że wczytał cały ekwipunek próbuje wczytywać dalej a nie wiem jak go zatrzymać, ale nie znam prawdziwego problemu.

1
komentarz 6 sierpnia 2022 przez ScriptyChris Mędrzec (190,190 p.)

@IsaacW, na przyszłość proszę umieszczać kod w odpowiednich bloczkach.

komentarz 6 sierpnia 2022 przez IsaacVV Początkujący (350 p.)
Dziękuję za poprawienie.

5 odpowiedzi

0 głosów
odpowiedź 6 sierpnia 2022 przez Apled Dyskutant (9,520 p.)
NullReferenceException: Object reference not set to an instance of an object
Ekwipunek.WyswietlEkwipunek () (at Assets/Paski/Skrypty/Ekwipunek/Ekwipunek.cs:42)
Ekwipunek.OnGUI () (at Assets/Paski/Skrypty/Ekwipunek/Ekwipunek.cs:32)

Błąd jest tak nie znany, że zwraca znany błąd.

(at Assets/Paski/Skrypty/Ekwipunek/Ekwipunek.cs:42)

(at Assets/Paski/Skrypty/Ekwipunek/Ekwipunek.cs:32)

W dodatku błąd informuje Cię, gdzie znajduje się jego przyczyna, czyli w linii 42 i linii 32.

Domyślam się, że w edytorze nie przekazujesz niczego do skryptu jako GUI i stąd NullReference

komentarz 6 sierpnia 2022 przez IsaacVV Początkujący (350 p.)
Wysłałem cały kod w tym skrypcie, nie używałem w żadnym innym "WyswietlEkwipunek ();"
ani "GUI.Box(polozenieSlotow, "", skin.GetStyle("SlotEkwipunku"));" Natomiast albo jestem ślepy i oglądając filmiki po 10 razy szukając czy gdzieś to na filmie dodał albo osoba od której się uczę też nigdzie tego nie dodawała(nie miał podpowiedzi przy wpisywaniu tego) tu filmik: https://www.youtube.com/watch?v=gGX0yCqEUC4
obejrzałem następny, powiększyłem kod, u niego bez błędu u mnie ten sam, niby działa ale jak mam włączony ekwipunek 5s to już ponad 1000 razy błąd się powtarza.
Błąd pojawia się w miejscu który odtwarza i wyświetla wszystko co ma wyświetlić, lecz wyrzuca błąd.
komentarz 6 sierpnia 2022 przez Apled Dyskutant (9,520 p.)
Czy w edytorze (nie w kodzie) masz powiązane ze skryptem jakieś GUI? Jeżeli masz tam puste pole, to próbujesz odwoływać się do czegoś, czego nie ma i to najprawdopodobniej jest problemem.
0 głosów
odpowiedź 6 sierpnia 2022 przez IsaacVV Początkujący (350 p.)

Wysłałem cały kod w tym skrypcie, nie używałem w żadnym innym "WyswietlEkwipunek ();"
ani "GUI.Box(polozenieSlotow, "", skin.GetStyle("SlotEkwipunku"));" Natomiast albo jestem ślepy i oglądając filmiki po 10 razy szukając czy gdzieś to na filmie dodał albo osoba od której się uczę też nigdzie tego nie dodawała(nie miał podpowiedzi przy wpisywaniu tego) tu filmik: https://www.youtube.com/watch?v=gGX0yCqEUC4
obejrzałem następny, powiększyłem kod, u niego bez błędu u mnie ten sam, niby działa ale jak mam włączony ekwipunek 5s to już ponad 1000 razy błąd się powtarza.
Błąd pojawia się w miejscu który odtwarza i wyświetla wszystko co ma wyświetlić, lecz wyrzuca błąd.

0 głosów
odpowiedź 7 sierpnia 2022 przez IsaacVV Początkujący (350 p.)

Zauważyłem że nie pojawiają mi się paski hp i tak dalej (działało), więc zmieniłem nazwę skryptu Ekwipunku by go nie odczytywało, i zaczął się tak samo kopiować błąd z paskami:
NullReferenceException: Object reference not set to an instance of an object
Paskipotrzeb.OnGUI () (at Assets/Paski/Skrypty/Paskipotrzeb.cs:70)
 

using System.Collections;
using UnityEngine;

public class Paskipotrzeb : MonoBehaviour {

    public float maxHP, obecneHP, maxGlod, obecneGlod, maxPragnienie, obecnePragnienie, maxEnergia, obecnaEnergia;
    public GUISkin skin;
    public UnityStandardAssets.Characters.FirstPerson.FirstPersonController Fpsc;
    bool czyEnergiaOdjeta;
    public float timer;
    void Start ()
    {
        maxHP = 100;
        obecneHP = 100;
        maxGlod = 50;
        obecneGlod = 50;
        maxPragnienie = 50;
        obecnePragnienie = 50;
        maxEnergia = 50;
        obecnaEnergia = 50;
        czyEnergiaOdjeta = false;
    }

    // Update is called once per frame
    void Update()
    {
        obecneGlod -= 0.3f * Time.deltaTime;
        obecnePragnienie -= 0.1f * Time.deltaTime;
        if (Fpsc.m_IsWalking == false)
        {
            obecnaEnergia -= 3 * Time.deltaTime;
            timer = 3;
        }
        if (Fpsc.m_Jumping == true && czyEnergiaOdjeta ==false)
        {
            czyEnergiaOdjeta = true;
            obecnaEnergia = obecnaEnergia - 8;
            timer = 3;
        }
        if(Fpsc.m_Jumping == false)
        {
            czyEnergiaOdjeta = false;
        }
        if(timer > 0)
        {
            timer -= 1 * Time.deltaTime;
        }
        if(timer <= 0)
        {
            timer = 0;
            if (obecnaEnergia < maxEnergia)
            {
                obecnaEnergia += 6 * Time.deltaTime;
            }
        if(obecneGlod <= 0)
            {
                obecneGlod = 0;
                obecneHP -= 0.5f * Time.deltaTime;
            }
        if(obecnePragnienie <= 0)
            {
                obecnePragnienie = 0;
                obecneHP -= 1.5f * Time.deltaTime;
            }
        }
    }

    void OnGUI()
    {
        GUI.Box(new Rect(50, Screen.height - 125, 150, 20), "Zdrowie: " + obecneHP.ToString("0") + "/" + maxHP, skin.GetStyle("PasekZdrowia"));
        GUI.Box(new Rect(50, Screen.height - 100, 150, 20), "Głód: " + obecneGlod.ToString("0") + "/" + maxGlod, skin.GetStyle("PasekGlodu"));
        GUI.Box(new Rect(50, Screen.height - 75, 150, 20), "Pragnienie: " + obecnePragnienie.ToString("0") + "/" + maxPragnienie, skin.GetStyle("PasekPragnienia"));
        GUI.Box(new Rect(50, Screen.height - 50, 150, 20), "Energia: " + obecnaEnergia.ToString("0") + "/" + maxEnergia, skin.GetStyle("PasekEnergii"));
    }
}

nagle całe GUI.Box przestało działać, po restarcie unity już nic nie mogę wyświetlić co się mogło stać? Nic nie zmieniałem a jeśli wyłączył się z odczytu w unity to jak to włączyć?
Proszę pomóżcie, wiele godzin już to robię.

0 głosów
odpowiedź 7 sierpnia 2022 przez IsaacVV Początkujący (350 p.)
Jeszcze nie wiem dlaczego, ale zaczęło działać, teraz nie widzę tylko pasków potrzeb, może to też się samo naprawi. Jeśli ktoś ma jakiś pomysł proszę o radę
0 głosów
odpowiedź 7 sierpnia 2022 przez IsaacVV Początkujący (350 p.)
Nagle paski się pojawiły, nie rozumiem ale ok. Temat można zamknąć

Podobne pytania

+1 głos
2 odpowiedzi 369 wizyt
pytanie zadane 10 października 2021 w C i C++ przez <młody_programista> Początkujący (450 p.)
0 głosów
1 odpowiedź 190 wizyt
pytanie zadane 26 lipca 2019 w C i C++ przez martin1724 Użytkownik (690 p.)
0 głosów
3 odpowiedzi 134 wizyt
pytanie zadane 19 kwietnia 2016 w Java przez Ditrix Mądrala (5,650 p.)

92,539 zapytań

141,382 odpowiedzi

319,481 komentarzy

61,928 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!

...