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. ^^
2 Antworten
Erstens, nutze bitte den </> Code Formatierer um hier Code zu posten , gerade bei python ist es wichtig wo wieviele leerzeichen sind .
Zweitens, schreibt man die Komplette fehlermeldung mit Zeilenangabe und am besten makiert man diese Zeile noch , den keiner weiss die Zeilenzahlen .
NullReferenceException: Object reference not set to an instance of an object
LevelGeneration.putRight (UnityEngine.Transform levelPart) (at Assets/LevelGeneration.cs:49)
LevelGeneration.SpawnLevelPart (UnityEngine.Transform levelPart, UnityEngine.Vector3 spawnPosition) (at Assets/LevelGeneration.cs:34)
LevelGeneration.spawnLevelPart () (at Assets/LevelGeneration.cs:42)
LevelGeneration.Awake () (at Assets/LevelGeneration.cs:17)
Naja der Fehler sagt alles aus. Du referenzierst auf eine Klasse die du nicht instanziiert hast. Du musst schon ein Objekt erzeugen, damit du eine Klasse nutzen kannst :D