Upon loading a new Scene I got The object of type has been destroyed but you are still trying to access it.
Hello All ! I´m doing a simple puzzle level where I have to collide with a GameObject in order to another GameObjects appear so I can cross safely to the End Line. I have just duplicated the scene and then trying to re-arrange the items I have already and when I collide with the GameObject, the following error appears.
I know the objects are destroyed when I load the new scene, however why is keep calling the previous objects when I collide and how can reference the new object to the new scene ?
MissingReferenceException: The object of type 'RedSuperBlock' has been destroyed but you are still trying to access it. Your script should either check if it is null or you should not destroy the object. UnityEngine.Component.GetComponent[T] () (at :0) RedSuperBlock.ChangeColorOfBlock (System.Int32 id) (at Assets/Scripts/Blocks/RedSuperBlock.cs:47) RedSuperBlock.OnCollisionEnter2D (UnityEngine.Collision2D block) (at Assets/Scripts/Blocks/RedSuperBlock.cs:29)
Line 29 is this: BlockChanger.ChangeColor(redID); Line 47 is this: GetComponent().sprite = purpleBlockSprite;
 using UnityEngine;
 using EZCameraShake;
 
 public class RedSuperBlock : MonoBehaviour
 {
     [SerializeField] private  Animator redBlock;
     [SerializeField] private  Sprite redBlockSprite;
     [SerializeField] private  Sprite purpleBlockSprite;
     public  bool blockerColor; // Controller of Red & Purple Master Block, False = Red, True = Purple
 
     public  int redID = 1;
     public  int purpleID = 2;
 
     public  int redOn = 1;
     public  int redOff = 2;
     public  int purpleOn = 1;
     public  int purpleOff = 2;
 
     private void Start()
     {
         BlockChanger.ChangeColor += ChangeColorOfBlock;
     }
 
     private void OnCollisionEnter2D(Collision2D block)
     {
         if (!blockerColor && block.gameObject.CompareTag("Player") && block.contacts[0].normal.y > 0.5f)
         {
             SoundManager.soundManager.Play("Pow");
             BlockChanger.ChangeColor(redID); // Turns Purple Master Block
             BlockChanger.DoRed(redOn);
             BlockChanger.DoPurple(purpleOff);
         }
         else if (blockerColor && block.gameObject.CompareTag("Player 2") && block.contacts[0].normal.y > 0.5f)
         {
             SoundManager.soundManager.Play("Pow");
             BlockChanger.ChangeColor(purpleID); // Turns Red Master Block
             BlockChanger.DoPurple(purpleOn);
             BlockChanger.DoRed(redOff);
         }
     }
 
     public void ChangeColorOfBlock(int id) // Reset all Red Blocks
     {
         if (id == 1)
         {
             blockerColor = true; // Turns Purple
             GetComponent<SpriteRenderer>().sprite = purpleBlockSprite; // Enable Purple Sprite
             redBlock.SetTrigger("Purple");
             gameObject.transform.GetChild(0).gameObject.SetActive(false);
             gameObject.transform.GetChild(1).gameObject.SetActive(true);
             CameraShaker.Instance.ShakeOnce(1f, 1f, .1f, 1f);
         }
         else if (id == 2)
         {
             blockerColor = false; //  Turns Red
             GetComponent<SpriteRenderer>().sprite = redBlockSprite; //  Enable Red Sprite
             redBlock.SetTrigger("Red");
             gameObject.transform.GetChild(0).gameObject.SetActive(true);
             gameObject.transform.GetChild(1).gameObject.SetActive(false);
             CameraShaker.Instance.ShakeOnce(1f, 1f, .1f, 1f);
         }
     }
 }
 
              Your answer