Object reference not set to an instance of an object
hi i am quite new to unity, i am trying to make a 2d game. Anyway, i trying to make my ship to shoot the bullet out. The code work but when i try to follow the tutorial about Inter-object communication ( basically separate the code out) i keep getting the error: NullReferenceException: Object reference not set to an instance of an object scrip.Update () (at Assets/scrip/Player_controller.cs:38)
well it point to: game_state.instance.Spawn_bullet(ship_gun.position);
this is my player_controller scrip using UnityEngine; using System.Collections;
public class scrip : MonoBehaviour {
public float speed = 1f;
Transform ship_gun;
public GameObject player_bullet;
// Use this for initialization
void Start () {
ship_gun = transform.Find("gun");
}
// Update is called once per frame
void Update () {
float deltaX = 0f, deltaY = 0f;
if (Input.GetKey(KeyCode.W))
{
deltaY -= 1f;
}
if (Input.GetKey(KeyCode.S))
{
deltaY += 1f;
}
if (Input.GetKey(KeyCode.D))
{
deltaX += 1f;
}
if (Input.GetKey(KeyCode.A))
{
deltaX -= 1f;
}
// fire bullet
if (Input.GetKey(KeyCode.Space))
{
game_state.instance.Spawn_bullet(ship_gun.position);
}
//update moverment
transform.Translate(new Vector3(deltaY, deltaX, 0f) * Time.deltaTime * speed);
}
}
and this is my game_state scrip
using UnityEngine;
using System.Collections;
public class game_state : MonoBehaviour
{
[SerializeField]
GameObject player_bullet;
public GameObject Spawn_bullet(Vector3 _position)
{
return (GameObject)Instantiate(player_bullet, _position, Quaternion.identity);
}
public static game_state instance = null;
void alwake ()
{
if (instance != null)
{
Debug.LogError("all found");
}
instance = this;
}
}
Well i am quite unsure what is wrong with it, the tutorial is unclear about where to add the game_state scrip to so i am quite unclear about the scrip is wrong or i am doing something else wrong
Thank for helping me :)
Answer by gjf · Nov 11, 2015 at 10:14 PM
there's an error in your game_state
script - line 14
void alwake ()
should read
void Awake()
case (& spelling!) are important ;)
you should also check whether game_state.instance
has been set before you use it too since the order in which scripts run might not be as expected.