[Dúvida] Script retorna erro apenas quando não esta selecionado
2 participantes
Página 1 de 1
[Dúvida] Script retorna erro apenas quando não esta selecionado
Olá, estou tendo um problema com a unity 2019.4.11.f1, simplesmente quando eu do "PLAY" e o objeto que contém meu script está selecionado na Hierarchy, funciona perfeitamente. Mas quando este objeto que contém o script não esta selecionado na hirarchy ele simplesmente me retorna o seguinte erro:
-> NullReferenceException: Object reference not set to an instance of an object.
Esse é um erro muito comum que acontece quando o código não acha a referencia de algum objeto, tipo uma variavel GameObject vazia.
Já procurei alguns tópicos no site oficial da unity sobre este bug, porém nenhum dos tópicos que encontrei foram respondidos. Tentei fechar e abrir a unity novamente, reiniciar o computador, mas nada funciona.
-> NullReferenceException: Object reference not set to an instance of an object.
Esse é um erro muito comum que acontece quando o código não acha a referencia de algum objeto, tipo uma variavel GameObject vazia.
Já procurei alguns tópicos no site oficial da unity sobre este bug, porém nenhum dos tópicos que encontrei foram respondidos. Tentei fechar e abrir a unity novamente, reiniciar o computador, mas nada funciona.
rafaelllsd- ProgramadorMaster
- PONTOS : 5241
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: [Dúvida] Script retorna erro apenas quando não esta selecionado
Tem como postar o código? E dizer em qual linha que o erro está acontecendo?
Já tive alguns erros nesse estilo, e geralmente são relacionados a falta de instância do item, ou por que o item não inicializou ainda, etc, etc
Já tive alguns erros nesse estilo, e geralmente são relacionados a falta de instância do item, ou por que o item não inicializou ainda, etc, etc
Re: [Dúvida] Script retorna erro apenas quando não esta selecionado
Aqui esta (É um instanciador de obstaculos):
- Código:
public class ObstacleSpawner : MonoBehaviour {
[System.Serializable]
private class Platform {
public List<Transform> currentObstacles = new List<Transform>();
}
[SerializeField] private LayerMask mask;
[SerializeField] private Transform player;
[SerializeField] private Platform[] platforms;
[SerializeField] private int maxHeight;
[SerializeField] private int currentPlatform = 1;
[SerializeField] private GameObject obstacleYellow;
[SerializeField] private GameObject obstaclePink;
[SerializeField] private int minX = -2;
[SerializeField] private int maxX = 2;
[SerializeField] private int minZ = -2;
[SerializeField] private int maxZ = 2;
[SerializeField] private List<Vector3> points = new List<Vector3>();
[SerializeField] private bool drawGizmos;
[SerializeField] private float counter = 0;
private Vector3 targetPosition;
private int index = 0;
void Awake () {
platforms = new Platform[maxHeight];
GenerateArea();
}
void Update () {
counter += Time.deltaTime;
if (counter > 0.5f && points.Count > 0) {
SetInfos(false);
}
if (currentPlatform < player.position.y && player.GetComponent<PlayerController>().PlayerState() == PlayerController.State.Idle) {
currentPlatform = (int)player.position.y;
while (points.Count > 0) {
SetInfos(true);
}
}
if (currentPlatform == player.position.y && points.Count == 0) {
GenerateArea();
index++;
}
}
private void SetInfos(bool fast) {
counter = 0;
int id = Random.Range(0,points.Count);
Vector3 spawnPosition = points[id];
targetPosition = spawnPosition;
targetPosition.y += 30;
points.Remove(spawnPosition);
RaycastHit hit;
if (Physics.Raycast(targetPosition,Vector3.down,out hit, mask)) {
if (hit.collider != null) {
if (hit.collider.tag == "Yellow") {
Spawn(obstacleYellow, targetPosition, spawnPosition, fast);
} else {
Spawn(obstaclePink, targetPosition, spawnPosition, fast);
}
}
}
if (fast == true) {
for (int x = 0; x < platforms[index].currentObstacles.Count; x++) {
if (platforms[index].currentObstacles[x] != null) {
platforms[index].currentObstacles[x].GetComponent<ObstacleBehaviour>().SetSpeed(9999);
}
}
}
}
private void Spawn (GameObject obj, Vector3 pos, Vector3 spp, bool fastt) {
GameObject inst = Instantiate(obj, pos, Quaternion.identity) as GameObject;
platforms[index].currentObstacles.Add (inst.transform);
inst.GetComponent<ObstacleBehaviour>().SetTarget(spp);
if (fastt == true) {
inst.GetComponent<ObstacleBehaviour>().SetSpeed(9999);
}
}
private void GenerateArea() {
for (int x = minX; x <= maxX; x++) {
for (int z = minZ; z <= maxZ; z++) {
points.Add(new Vector3 (x, currentPlatform, z));
}
}
}
private void OnDrawGizmos() {
if (drawGizmos) {
if (points.Count > 0) {
for (int x = 0; x < points.Count; x++) {
Gizmos.DrawCube(points[x], new Vector3(1, 1, 1));
}
}
}
}
}
Última edição por rafaelllsd em Sex Out 09, 2020 3:38 pm, editado 1 vez(es) (Motivo da edição : Adições)
rafaelllsd- ProgramadorMaster
- PONTOS : 5241
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: [Dúvida] Script retorna erro apenas quando não esta selecionado
Você está definindo o size dessa array na mão para iniciá-la, mas quando busca o índice, ele não tem nenhum elemento nele, o que é beeem estranho.
Tem como montar um projeto pequeno com os códigos envolvidos para que eu possa testar?
Eu ia testar já aqui no meu PC, mas não consegui, por que estão faltando algumas classes como ObstacleBehaviour, ou PlayerController
Tem como montar um projeto pequeno com os códigos envolvidos para que eu possa testar?
Eu ia testar já aqui no meu PC, mas não consegui, por que estão faltando algumas classes como ObstacleBehaviour, ou PlayerController
Tópicos semelhantes
» ( Dúvida Unity 5 ) Erro Script C#
» Está me a dar um erro no script, ajudem-me porfavor
» Erro quando crio um script(URGENTE)!!!
» Estou com problema com um script que está dando erro.
» (DUVIDA) script dando erro
» Está me a dar um erro no script, ajudem-me porfavor
» Erro quando crio um script(URGENTE)!!!
» Estou com problema com um script que está dando erro.
» (DUVIDA) script dando erro
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos