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

NullReferenceException: Object reference not set to an instance of an object// Gra 2D w Unity

Object Storage Arubacloud
0 głosów
1,634 wizyt
pytanie zadane 30 września 2018 w C# przez DaroTL Nowicjusz (180 p.)

Oto moj problem

NullReferenceException: Object reference not set to an instance of an object
EnemyProjectile.OnTriggerEnter2D (UnityEngine.Collider2D collision) (at Assets/Scripts/EnemyProjectile.cs:20)

Oto caly skrypt 

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

public class EnemyProjectile : MonoBehaviour
{

    
    public float Edamage;

    

    void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.tag != "Enemy")
       {
           if (collision.tag == "Player")
            {
              
              StatyGracza.staty.DealDamage(Edamage);
             
            }
            Destroy(gameObject);
       }
    }

a to drugi skrypt

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

public class StatyGracza : MonoBehaviour
{
    public static StatyGracza staty;
    public GameObject Player;
    public float health, Maxhealth;

    

    void Start()
    {
        
        health = Maxhealth;
    }

    public void DealDamage(float damage)
    {
        print(damage);
       health = health - damage;
        CheckDeath();
    }

    void CheckDeath()
    {
        if (health <= 0)
        {
            Destroy(Player);
        }
    }

    void AutoHeal()
    {
        if (health > Maxhealth)
        {
            health = Maxhealth;
        }
    }



}

bylbym bardzo wdzieczny za pomoc

1 odpowiedź

+1 głos
odpowiedź 30 września 2018 przez draghan VIP (106,230 p.)

Musisz zainicjalizować składową StatyGracza.staty.

public static StatyGracza staty = new StatyGracza();

 

komentarz 1 października 2018 przez DaroTL Nowicjusz (180 p.)

probowalem ale wtedy reszta nie dziala

    public void DealDamage(float damage)
    {
        print(damage);
       health = health - damage;
        CheckDeath();
    }

a nawet kolizja

 

 

1
komentarz 1 października 2018 przez draghan VIP (106,230 p.)
Nie rozumiem, co znaczy "reszta nie działa". Czy przypisujesz gdzieś jakieś wartości początkowe dla zmiennych składowych Twoich klas?
komentarz 1 października 2018 przez DaroTL Nowicjusz (180 p.)
edycja 1 października 2018 przez DaroTL

Nie dziala zmienna health ktora caly czas wskazuje jedna liczbe

ps tylko to przypisuje

    void Start()
    {
         
        health = Maxhealth;
    }

jeszcze blad 

You are trying to create a MonoBehaviour using the 'new' keyword.  This is not allowed.  MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all
UnityEngine.MonoBehaviour:.ctor()
StatyGracza:.ctor()
StatyGracza:.cctor() (at Assets/StatyGracza.cs:7)
 

Podobne pytania

0 głosów
1 odpowiedź 293 wizyt
0 głosów
1 odpowiedź 824 wizyt

92,556 zapytań

141,404 odpowiedzi

319,561 komentarzy

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

...