- Home /
Question by
Dinosora · May 29 at 12:22 AM ·
2d gamenull reference exception
2D null missing reception exception, entering in/out of a scene multiple times breaks the game, some aspects clashing with my picking up item code
Hello everyone, I am having some trouble with my scene transitions. I currently have a scene transition setup, but after I enter and reenter a scene 2 times, the code breaks and has a null expectation error with my picking up item code. Null error is at line 15 for the pickupitem code
This is the picking up item code.
using System.Collections;
using System.Collections.Generic;
using System;
using UnityEngine;
public class PickUpItem : MonoBehaviour
{
Transform player1;
[SerializeField] float speed = 5f;
[SerializeField] float pdistance = 1.5f;
[SerializeField] float tt1 = 10f;
[SerializeField]GameObject temp;
private void Awake()
{
player1 = GameManager.instance.player.transform;
}
private void Update()
{
if(player1 != null) {
float distance2 = Vector2.Distance(transform.position, player1.position);
if (distance2 > pdistance)
{
return;
}
transform.position = Vector3.MoveTowards(transform.position, player1.position, speed * Time.deltaTime);
if (distance2 < 0.1f)
{
temp = GameObject.FindGameObjectWithTag("Branch");
Destroy(temp);
}
}
}
}
This is the transition code
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public enum TransitionType
{
Warp,
Scene
}
public class Transition : MonoBehaviour
{
[SerializeField] TransitionType transitionType;
[SerializeField] string SceneName;
Transform destination;
void Start()
{
destination = transform.GetChild(1);
}
internal void initiateTransition(Transform toTransition)
{
switch (transitionType)
{
case TransitionType.Warp:
toTransition.position = new Vector3(destination.position.x, destination.position.y, toTransition.position.z);
break;
case TransitionType.Scene:
SceneManager.LoadScene(SceneName);
break;
}
}
}
TransitionArea
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class TransitionArea : MonoBehaviour { private void OnTriggerEnter2D(Collider2D collision) { if (collision.transform.CompareTag("Player")) { transform.parent.GetComponent().initiateTransition(collision.transform); } } }
Comment
Your answer
