Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

NullReferenceException: Object reference not set to an instance of an object scriptDisparo OnTriggerEnter (UnityEngine.Collider other) (at Assets/GAMENORMAL/scriptsGAMENORMAL/scriptDisparo.cs:131)

Iniciado por ochoag, Marzo 19, 2016, 10:08:11 PM

Tema anterior - Siguiente tema
Tengo en mi codigo script disparo.
 
if (other.gameObject.tag == "roca1")
{

Vector3 reset =new Vector3(Random.Range(-10.0f, 10.0f), Random.Range(-10.0f, 10.0f), Random.Range(30.0f, 70.0f));
other.transform.position = reset;

Instantiate(explosion, transform.position, transform.rotation);
Destroy(gameObject);


//Sumamos un punto al GameState
game.transform.GetComponent<scriptGameState>().AddScore(); //esta es la linea 131
game2.transform.GetComponent<GameStateSurvival>().AddScore();
game3.transform.GetComponent<GameStateSurvival1>().AddScore();
game4.transform.GetComponent<GameStateSurvival2>().AddScore();
game5.transform.GetComponent<GameStateSurvival3>().AddScore();
game6.transform.GetComponent<GameStateSurvival4>().AddScore();
game7.transform.GetComponent<GameStateSurvivalInfinito>().AddScore();
game8.transform.GetComponent<scriptGameState100>().AddScore();
game9.transform.GetComponent<scriptGameState200>().AddScore();
game10.transform.GetComponent<scriptGameState300>().AddScore();
game11.transform.GetComponent<scriptGameState400>().AddScore();
game12.transform.GetComponent<scriptGameState500>().AddScore();
game13.transform.GetComponent<scriptGameState600>().AddScore();
game14.transform.GetComponent<scriptGameState700>().AddScore();
game15.transform.GetComponent<scriptGameState800>().AddScore();
game16.transform.GetComponent<scriptGameState900>().AddScore();
game17.transform.GetComponent<scriptGameState1000>().AddScore();
game18.transform.GetComponent<scriptGameStateER1>().AddScore();
game19.transform.GetComponent<scriptGameStateER2>().AddScore();
}

pero cuando pongo play al momento de colisionar el disparo con la roca me manda esto:
NullReferenceException: Object reference not set to an instance of an object
scriptDisparo OnTriggerEnter (UnityEngine.Collider other) (at Assets/GAMENORMAL/scriptsGAMENORMAL/scriptDisparo.cs:131)


y esto en mi script GameState que hace referencia al error.
game.transform.GetComponent<scriptGameState>().AddScore(); Este es mi GameState script:
using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;
public class scriptGameState : MonoBehaviour {



static int puntos = 0;
static int vida = 10;
static float timer = 60; //Tiempo de juego


void Start()
{
InvokeRepeating("Timer", 1.0f, 1.0f);
puntos = 0;
timer = 60;
vida = 10;
}

void Update()
{

if (vida <= 0)
{

}

if (timer <= 0 && puntos >= 50)
{



}
if (timer <= 0 && puntos < 50)
{



}
print("Puntuacion: " + puntos);
print("Vidas: " + vida);

}




//Establecemos el tiempo de juego y los restamos
public void Timer()
{
if (--timer == 0)
{
CancelInvoke();
}
}

public void SumaTimer()
{
timer += 10;
}

public void PasarPuntos()
{
PlayerPrefs.SetInt("Puntuacion", puntos);
}
public void AddScore()
{
puntos += 1;

}

public void AddScore2()
{
puntos += 2;

}

public void DestroyEnemy()
{
puntos += 5;
}
public void AddScore3()
{
puntos += 3;

}
//Sumamos Vidas
public void SumarVidas()
{
vida += 1;
}
//Restamos Vidas
public void RestarVidas()
{
vida -= 1;
}

void OnGUI()
{
GUI.Label(new Rect(35, 60, 100, 20), "Puntuacion: " + puntos);
GUI.Label(new Rect(175, 60, 100, 20), "Vidas: " + vida);
GUI.Label(new Rect(345, 60, 100, 20), "Tiempo: " + timer);

}


}


Quiero llamar al metodo AddScore cuando el disparo colisione las rocas...Como puedo solucionar el problema?


No puedes pegar un código tal cual por aquí, y esperar a que averigüemos mágicamente dónde está el fallo.Por favor, usa un servicio cómo http://Pastebin.com y péganos todo el código que da error. De esa forma veremos la línea dónde falla todo y podremos hacernos mejor idea de qué estás haciendo mal.. Suerte 

perdon por las molestias pero la linea 131 es la de game.transform.GetComponent<scriptGameState>().AddScore(); Y ya la indique en el codigo para que no haya confusion si me podrian ayudar porque este metodo no me esta funcionando Lo hize con SendMessage y si funciono pero el problema es que solo me permite manejar un GameObject...que podría hacer? 

Según mi suma de líneas local, en la línea 8 donde tienes Destroy(gameObject); creo que te destruyes a ti mismo y luego haces el proceso de los score.

[quote author=iRobb" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="35436" data-ipsquote-contentcommentid="128736">Según mi suma de líneas local, en la línea 8 donde tienes Destroy(gameObject); creo que te destruyes a ti mismo y luego haces el proceso de los score.[/quote]eso mismo  

Etiquetas: