Wie kann ich "Object reference not set to an instance of an object" beheben?

Hallo,

ich bin dabei, ein Spiel zu machen und bekomme die ganze Zeit den Fehler

Object reference not set to an instance of an object

bei dem Code.

using System;
using System.Collections.Generic;
using UnityEngine;
using Random = UnityEngine.Random;
using Object = UnityEngine.Object;

// Token: 0x02000007 RID: 7
public class LevelGeneration : MonoBehaviour
{
  // Token: 0x06000015 RID: 21 RVA: 0x0000246C File Offset: 0x0000066C
  private void Awake()
  {
    this.lastEndPosition = this.levelPart_Start.Find("EndPosition").position;
    int num = 5;
    
    for (int i = 0; i < num; i++)
    {
      this.spawnLevelPart();
    }
  }

  // Token: 0x06000016 RID: 22 RVA: 0x000024A8 File Offset: 0x000006A8
  private void Update()
  {
    if (Vector3.Distance(this.player.transform.position, this.lastEndPosition) < 200f)
    {
      this.spawnLevelPart();
    }
  }

  // Token: 0x06000017 RID: 23 RVA: 0x000024D4 File Offset: 0x000006D4
  private Transform SpawnLevelPart(Transform levelPart, Vector3 spawnPosition)
  {
    Transform transform = Object.Instantiate<Transform>(levelPart, spawnPosition, Quaternion.identity);
    this.putRight(transform);
    return transform;
  }

  // Token: 0x06000018 RID: 24 RVA: 0x000024F8 File Offset: 0x000006F8
  private void spawnLevelPart()
  {
    Transform levelPart = this.levelPartList[Random.Range(0, this.levelPartList.Count)];
    Transform transform = this.SpawnLevelPart(levelPart, this.lastEndPosition);
    this.lastEndPosition = transform.Find("EndPosition").position;
  }

  // Token: 0x06000019 RID: 25 RVA: 0x00002548 File Offset: 0x00000748
  private void putRight(Transform levelPart)
  {
    this.bottomPosition.y = levelPart.Find("bottom").position.y;
    this.topPosition.y = levelPart.Find("top").position.y;

    if (this.bottomPosition.y <= -10f)
    {
      levelPart.transform.position += new Vector3(0f, 3f, 0f);
    }

    if (this.topPosition.y >= 10f)
    {
      levelPart.transform.position -= new Vector3(0f, 3f, 0f);
    }
  }

  // Token: 0x04000013 RID: 19
  private const float PLAYER_DISTANCE_SPAWN_LEVEL_PART = 200f;

  // Token: 0x04000014 RID: 20
  [Header("Level Parts")]
  [SerializeField]
  private Transform levelPart_Start;

  // Token: 0x04000015 RID: 21
  [SerializeField]
  private List<Transform> levelPartList;  

  // Token: 0x04000016 RID: 22
  [Header("Objects")]
  [SerializeField]
  private GameObject player;

  // Token: 0x04000017 RID: 23
  private Vector3 lastEndPosition;

  // Token: 0x04000018 RID: 24
  private Vector3 bottomPosition;

  // Token: 0x04000019 RID: 25
  private Vector3 topPosition;
}

Ich danke jetzt schon für die Antworten. ^^

Computer, programmieren, C Sharp, Unity
Unity - Kann eine Funktion ausgelöst werden, sobald ein Variable Wert sich ändert?

Hallo.

ich habe in meinem spielt sehr viele Funktionen, die über public void update laufen, also jeden Frame ausgelöst werden. Zum Beispiel:

if (Leben == 0)

{
Destroy(gameObject);
}

Ich mache mir dabei ein wenig Sorgen, dass es es von der Leistung zu viel wird für das Gerät auf dem das Spiel läuft. Besonders, weil ich mir denke, dass es bei vielen Funktionen gar nicht nötig ist jeden Frame abgefragt zu werden, weil sie nur paar mal ausgelöst werden. Deshalb wollte ich mal fragen, ob es möglich ist, dass eine Funktion nur dann ausgelöst wird, sobald der Wert einer Variable sich verändert. Zum Beispiel soll Funktion a ausgelöst werden, sobald int Leben seinen Wert ändert z.B. von 10 auf 9. klar könnte ich den Wert abspeichern und sobald der aktuelle Wert nicht mehr den abgespeicherten Wert entspricht wird die Funktion dann ausgelöst, aber dann nutze ich ja auch wieder public void update um das abzufragen.
Wie machen das gewöhnlich die Profis? Lassen sie wirklich Funktionen wie diese jeden Frame abfragen? Bitte um Hilfe!

Und dazu würde mich auch interessieren, wie sehr belastet zum Beispiel das obige Beispiel die Leistung eines Geräts, wenn 100 Funktionen wie diese jeden Frame abgefragt werden? Gibt es ein Maß an den man sich richten sollte oder kann ein gewöhnliches Gerät sogar bedenkenlos viele solcher Funktionen per Frame mit Leichtigkeit abfragen?

Computer, Leistung, Unity

Meistgelesene Beiträge zum Thema Unity