- Home /
NullReferenceException
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:
if(!weaponObj.GetComponent<WeaponBehavior>().haveWeapon){
the weaponObj. is declared as:
weaponObj = PlayerWeaponsComponent.weaponOrder[i];
and the PlayerWeaponsComponent is declared as:
PlayerWeapons PlayerWeaponsComponent = Camera.main.transform.parent.transform.parent.GetComponentInChildren<PlayerWeapons>();
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[i].GetComponent<WeaponBehavior>().weaponNumber == weaponNumber){
weaponObj = PlayerWeaponsComponent.weaponOrder[i];
break;
}
}
}
}
void PickUpItem (){
//if player does not have this weapon, pick it up
if(!weaponObj.GetComponent<WeaponBehavior>().haveWeapon){
I can't get behind why it shouldn't find the weaponObj. anymore.
I hope someone can help me with this (:
Your sincerely,
Marco
It seems like you don't have a WeaponBehaviour script on that gameObject. Did you check in paused play mode if it's actually there?
Answer by Jeff-Kesselman · Jun 10, 2014 at 11:47 PM
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
Ok I faced that the problem is pretty far at the beginning already. I thought I solved this already.
PlayerWeapons PlayerWeaponsComponent = GameObject.Find("Player(Clone)").GetComponentInChildren<PlayerWeapons>();
Does not work. To clarify:
Player(Clone) is the GameObject that Contains another GameObject called FPS Weapons on that the Script PlayerWeapons is attached. I can't find a solution to access this script.
Your answer
Follow this Question
Related Questions
Remmember the spawner 2 Answers
Object reference to set to instance on an instantiated object 1 Answer
NullReferenceException... 1 Answer
troubleshooting NullReferenceException 2 Answers
NullReferenceException 2 Answers