- Home /
NullReferenceException: Object Reference Not Set To An Instance Of An Object
So I have a script that I have put onto a weapon, which is parented to the player's hand. The player game object has a script called PlayerClass that has the list of stats for te player. when the weapon hits an enemy, the weapon script is called:
using UnityEngine;
using System.Collections;
public class WeaponAttackScript : MonoBehaviour
{
public delegate void WeaponHit (); /*this is necessary for the event*/
public static event WeaponHit OnHit; /*sets up the event so that we know when the weapon hits an enemy*/
// Use this for initialization
void Start ()
{
}
// Update is called once per frame
void Update ()
{
}
void OnTriggerEnter(Collider enemyCollider) /*trigger allows us to avoid the terrain-flying bug.*/
{
if(enemyCollider.gameObject.tag=="Enemy")
{
PlayerClass playerStats = this.gameObject.transform.parent.GetComponent<PlayerClass>(); /*for getting player's strength*/
InventoryItemClass weaponType = GetComponent<InventoryItemClass>();/*the item class, needed for
getting the base damage*/
EnemyTypeClass enemyType = enemyCollider.gameObject.GetComponent<EnemyTypeClass>(); /*references
enemy's type to get armour rating (see next line)*/
float enemyArmourRating = enemyType.armourRating; /*self-explanatory*/
float baseDamage = weaponType.itemDamage; /*"*/
float attackerStrength = playerStats.strength; /*"*/
float damageDealt = (baseDamage/enemyArmourRating)*(attackerStrength/100.0f);
if (PlayerClass.isAttacking == true) /*just need to sort out the double-hit issue*/
{
enemyType.health = enemyType.health - damageDealt;
OnHit ();
Debug.Log ("Hit for " + damageDealt + " damage");
}
}
}
}
but when I hit the enemy, this error message pops up:
NullReferenceException: Object reference not set to an instance of an object WeaponAttackScript.OnTriggerEnter (UnityEngine.Collider enemyCollider) (at Assets/scripts/CombatScripts/WeaponAttackScript.cs:33)
where have I gone wrong?
Edit: I fixed it by using GetComponentInParent instead of this.gameObject.transform.parent.GetComponent, but I still wouldn't mind knowing why the previous method didn't work.
Answer by coutlass-supreme · Sep 30, 2015 at 06:33 AM
A duplicate of this one
http://answers.unity3d.com/questions/380349/nullreferenceexception-with-an-event.html
Follow this Question
Related Questions
My Project doesn't work - Generic.List throws NullReferenceException ?! 0 Answers
Nested Class Initialization 1 Answer
Can't explain an NRE 0 Answers
Trouble with Null Reference in Script 2 Answers