Hello Unity Community!

It’s me again.

So, since I changed my Prefab from being in the Game when it Starts to a (Clone) which gets created shortly later, A NullReferenceException Error pops up in this Line:


the weaponObj. is declared as:

weaponObj = PlayerWeaponsComponent.weaponOrder*;*

and the PlayerWeaponsComponent is declared as:
PlayerWeapons PlayerWeaponsComponent = Camera.main.transform.parent.transform.parent.GetComponentInChildren();
Code snippet to clarify what happens exactly:

  • //find the PlayerWeapons script in the FPS Prefab to access weaponOrder array*
  •   	PlayerWeapons PlayerWeaponsComponent = Camera.main.transform.parent.transform.parent.GetComponentInChildren<PlayerWeapons>();*
  •   //scan the children of the FPS Weapons object (PlayerWeapon's weaponOrder array) and assign this item's weaponObj to the*
  •   //weapon object whose weaponNumber in its WeaponBehavior script matches this item's weapon number*
  •   for (int i = 0; i < PlayerWeaponsComponent.weaponOrder.Length; i++)	{*

_ if(PlayerWeaponsComponent.weaponOrder*.GetComponent().weaponNumber == weaponNumber){_
_ weaponObj = PlayerWeaponsComponent.weaponOrder;

* void PickUpItem (){*
* //if player does not have this weapon, pick it up*
* if(!weaponObj.GetComponent().haveWeapon){*
I can’t get behind why it shouldn’t find the weaponObj. anymore.
I hope someone can help me with this (:
Your sincerely,

When faced with a null pointer error the first thing you should do is determine exactly what is null.

Right before where you have the error insert these lines:

Debug.Log("weaponObj is "+weaponObj))
Debug.Log("Component WeaponBehavior is "+weaponObj.GetComponent<WeaponBehavior>());

If neither of those returns null then you are wrong about where your error is.

if either of those returns null, it will get you started on finding your problem