remove a null object from a dictionary

Hi! trying to make a minimap without using a second camera. Does anybody know how to remove a null object from a dictionary? When player collects a star this star gets destroyed and I get an error “MissingReferenceException: The object of type ‘MiniMapWorldObject’ has been destroyed but you are still trying to access it.”

This is dictionary:

Dictionary<MiniMapWorldObject, MiniMapIcon> miniMapWorldObjectsLookup = new Dictionary<MiniMapWorldObject, MiniMapIcon>();

And this one loops through the dictionary:

void UpdateMiniMapicons()
    {
        //loop through the dictionary
        foreach (var kvp in miniMapWorldObjectsLookup)
        {
            var miniMapWorldObject = kvp.Key;
            var miniMapIcon = kvp.Value;

            //get a valid map position for minimap icon
            var mapPosition = WorldPositionTomapPosition(miniMapWorldObject.transform.position);

            //apply new map position
            miniMapIcon.RectTransform.anchoredPosition = mapPosition;

            //minimap icons rotation to match the world objects rotation
            var rotation = miniMapWorldObject.transform.rotation.eulerAngles;

            //set minimap icons match
            miniMapIcon.IconRectTransform.localRotation = Quaternion.AngleAxis(-rotation.y, Vector3.forward); //angle access is going to ask for an angle of how much the rotation is
        }
    }

Tried to use list below but still getting the same error “MissingReferenceException” and icon doesnt disappear from a minimap. Wondering if there is something wrong with this code below

List<MiniMapWorldObject> toBeRemoved = new List<MiniMapWorldObject>();

void Remove()
{
toBeRemoved.Clear();
foreach (var kv in miniMapWorldObjectsLookup)
{

if (kv.Key == null || kv.Value == null)
{
toBeRemoved.Add(kv.Key);
}
}
for (int i = 0; i < toBeRemoved.Count; i++)
{
miniMapWorldObjectsLookup.Remove(toBeRemoved[i]);
}
toBeRemoved.Clear();
}

Well fix that first. There’s only one way to fix that.

The answer is always the same… ALWAYS. It is the single most common error ever.

Don’t waste your life spinning around and round on this error. Instead, learn how to fix it fast… it’s EASY!!

Some notes on how to fix a NullReferenceException error in Unity3D

  • also known as: Unassigned Reference Exception
  • also known as: Missing Reference Exception
  • also known as: Object reference not set to an instance of an object

http://plbm.com/?p=221

The basic steps outlined above are:

  • Identify what is null
  • Identify why it is null
  • Fix that.

Expect to see this error a LOT. It’s easily the most common thing to do when working. Learn how to fix it rapidly. It’s easy. See the above link for more tips.

You need to figure out HOW that variable is supposed to get its initial value. There are many ways in Unity. In order of likelihood, it might be ONE of the following:

  • drag it in using the inspector
  • code inside this script initializes it
  • some OTHER external code initializes it
  • ? something else?

This is the kind of mindset and thinking process you need to bring to this problem:

https://discussions.unity.com/t/814091/4

Step by step, break it down, find the problem.

Here is a clean analogy of the actual underlying problem of a null reference exception:

https://discussions.unity.com/t/840647/7