SchultzGames
Para tirar dúvidas, crie um tópico especifico na área "Dúvidas em Geral" e aguarde ser respondido. Evite comentar em tópicos não relacionados a sua dúvida Very Happy
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
✖ Projeto HOSPICE Horror Game !! ✖
Precisamos de modeladores
Machado PBR | 3D Axe with PBR textures.
Rigidbody2D AddForce - Como adicionar uma força oneshot.
duvida
Em breve Ilhas Multiplayer, sobrevivencia PVP E PVM
Text multiplayer
[TUTORIAL] Avião Script
Duvida sobre o Unet
Colocar Gifs em uma UI Unity 5?
Como faço para a musica continuar tocando quando muda de cena?
MANTER TELA DO CELULAR LIGADA
Tirar Fotos no Unity 5 FPS
[TUTORIAL] Luz Principal,Luz de Freio,Piscas para Carro,Moto,Caminhão,Ônibus,Etc...
como posso colocar tempo em qualquer script?
SCRIPT ISOMETRICO PARA ROTACIONAR O PLAYER COM MOUSE
Mesmo material mas objeto mais claro
MEU JOGO DE TERROR EM DESENVOLVIMENTO E BLOGGUER
Alguém pode fazer um rig pra mão do meu personagem?
Verificar quantos objetos tem a seguinte tag na scena
visualizador de ritmo
the ŞỮŘVƗVΔŁ ƗŞŁΔŇĐ [Lançamento]
Time
Unity Banco de Dados
Grave no Som da Unity!
ESSE EO MEU JOGO QUE EU ESTOU DESENVOLVENDO (VERSAO ALPHA)
Assesar Script De Outra Script
Camera FPS atravessa paredes
R7 - GOOH (resident evil 7)
Formação de equipa para o Jogo Until the last
Suspensão carro com raycast
como criar um botao dentro do if() (em C# pq quero padronizar tudo na mesma linguagem)
Arquivos de Expanssão OBB
Formação de equipe para jogo estilo Rust/DayZ
[DUVIDA]como girar sprite somente no eixo X em direção do mouse
GRAVIDADE não é compatível com Camera.main.ScreenToViewportPoint ?
[DEVLOG] Projeto - Girl Blade (download Pré-Alpha)
[SUPER ATUALIZAÇÃO] - Android - Night Hunter RPG, Faça um teste e avalie! Alpha #5
Recrutamento para jogo de sobrevivencia estilo DayZ/Rust/H1Z1
-[SCRIPT DE POSIÇÕES ]-
[Duvida] Unity5 - Physics2D.Raycast não obedece distância máxima.
[____APOIE O FÓRUM E O CANAL E GANHE RECOMPENSAS____]
como posso fazer sons dos passos do inimigo
Unity - Car engine sound - Primeiro teste
Dúvida sobre particulas
[RESOLVIDO] Executar animação após um X segundos
Como indentificar que estou escrevendo [Unity.UI inputField]
[RESOLVIDO] Blender - Mesh com ossos bugados
[RESOLVIDO] OntriggerEnter Bugado
[RESOLVIDO] Problema com o Reimport e atualização do modelo
Como fazer o raycast ignorar a primeira colisao?
[RESOLVIDO] Animações no script
Transição de Cores Entre Cenas!
Sistema de corrida
Como Detectar toques e destruir objetos no jogo
Terreno procedural com blocos para baixo
alguem poderia me ajudar??
[TUTORIAL] Spawn de objetos aleatorios em lugares aleatorios
[TUTORIAL] AI Enemy 2.0 + animações ( Jogos de terror )
alguem sabe um sistema/ideia/tutorial de nicknames/indentificaçao para NETWORK local???
Jogo na Play Store e atualmente tem 40 downloads.
Translate.rotate ( 0, 0, Erro )
[Duvida] Time.TimeScale em jogo multiplayer
Aplicativo Reseta o Banco de Dados - Sqlite
7 erros no script conectar
Audio Player C#
Divulgaçao de Battle of Worlds
Duvida sobre Screenshot e share
Sistema de Buscar o Inimigo Mais Perto
[TUTORIAL] Criar um Array ( lista de objetos )
Casa do CJ Remake unity 2017 + Blender
Fazer um objeto brilhar
criação de terreno realista
Navmesh em mapa gerado aleatoriamente existe?
Linkar Objetos FIlhos!
Seguir um raio no raycast a partir do ponto da tela clicado
Destruir Objetos Filhos
Como fazer um jogo Isometrico com Unity ?
[Duvida] Prefab instanciado não esta indo na direção correta
Sistema De dois Players
Formação de uma equipe pequena
Terreno Procedural
quero instanciar um obj vazio como faço?
[Dúvida] Bugs nos tiros de um jogo 2d
[Dúvida] Cena ficando escura
[RESOLVIDO] Destacar objetos com uma outline
[RESOLVIDO] Algum modo de usar a câmera do android
[RESOLVIDO] Limitar visão em um cenário 2d
Link Torrent Unity 5
Erro CS0118 e CS0131 em script de save.
[____ADMINISTRAÇÃO____] PRECISO DE AJUDA [DICA PARA SER AJUDADO]
[RESOLVIDO]Flip network
Erro em script do Photon Voice
erro de build do jogo
unity ele nao carrega os assets
[____ADMINISTRAÇÃO____] Problemas ao se cadastrar no fórum
[TUTORIAL]fazer os vidros quebrarem!
[RESOLVIDO]Animação importada do 3d Max muda de lugar na Unity
[TUTORIAL] Derrubar arvores e dropar madeiras dela
Hoje à(s) 9:17 pm
Hoje à(s) 9:04 pm
Hoje à(s) 8:06 pm
Hoje à(s) 8:05 pm
Hoje à(s) 5:48 pm
Hoje à(s) 5:27 pm
Hoje à(s) 4:26 pm
Hoje à(s) 3:08 pm
Hoje à(s) 1:44 pm
Hoje à(s) 12:52 pm
Hoje à(s) 10:38 am
Hoje à(s) 10:36 am
Hoje à(s) 10:07 am
Hoje à(s) 9:44 am
Hoje à(s) 6:53 am
Hoje à(s) 12:53 am
Ontem à(s) 9:14 pm
Ontem à(s) 9:00 pm
Ontem à(s) 8:42 pm
Ontem à(s) 8:35 pm
Ontem à(s) 8:17 pm
Ontem à(s) 7:23 pm
Ontem à(s) 7:05 pm
Ontem à(s) 6:36 pm
Ontem à(s) 6:06 pm
Ontem à(s) 5:59 pm
Ontem à(s) 5:41 pm
Ontem à(s) 5:08 pm
Ontem à(s) 4:57 pm
Ontem à(s) 4:11 pm
Ontem à(s) 4:04 pm
Ontem à(s) 3:29 pm
Ontem à(s) 2:44 pm
Ontem à(s) 1:59 pm
Ontem à(s) 1:42 pm
Ontem à(s) 1:37 pm
Ontem à(s) 1:21 pm
Ontem à(s) 1:18 pm
Ontem à(s) 12:44 pm
Ontem à(s) 11:25 am
Ontem à(s) 10:03 am
Ontem à(s) 9:19 am
Ontem à(s) 9:19 am
Ontem à(s) 9:09 am
Ontem à(s) 8:23 am
Ontem à(s) 1:39 am
Ontem à(s) 11:57 pm
Ontem à(s) 11:30 pm
Sab Out 14, 2017 7:07 pm
Sab Out 14, 2017 6:01 pm
Sab Out 14, 2017 5:55 pm
Sab Out 14, 2017 4:25 pm
Sab Out 14, 2017 12:50 pm
Sab Out 14, 2017 12:46 pm
Sex Out 13, 2017 11:58 pm
Sex Out 13, 2017 11:05 pm
Sex Out 13, 2017 9:21 pm
Sex Out 13, 2017 9:20 pm
Sex Out 13, 2017 8:27 pm
Sex Out 13, 2017 5:45 pm
Sex Out 13, 2017 5:37 pm
Sex Out 13, 2017 3:31 pm
Sex Out 13, 2017 2:59 pm
Sex Out 13, 2017 2:02 pm
Sex Out 13, 2017 11:17 am
Sex Out 13, 2017 9:27 am
Sex Out 13, 2017 2:17 am
Qui Out 12, 2017 11:57 pm
Qui Out 12, 2017 11:26 pm
Qui Out 12, 2017 11:23 pm
Qui Out 12, 2017 8:32 pm
Qui Out 12, 2017 7:23 pm
Qui Out 12, 2017 2:58 pm
Qui Out 12, 2017 12:51 pm
Qui Out 12, 2017 11:58 am
Qui Out 12, 2017 6:49 am
Qua Out 11, 2017 11:37 pm
Qua Out 11, 2017 10:01 pm
Qua Out 11, 2017 3:52 pm
Qua Out 11, 2017 12:45 pm
Qua Out 11, 2017 12:42 pm
Qua Out 11, 2017 8:38 am
Qua Out 11, 2017 12:31 am
Ter Out 10, 2017 11:43 pm
Ter Out 10, 2017 11:42 pm
Ter Out 10, 2017 11:39 pm
Ter Out 10, 2017 11:31 pm
Ter Out 10, 2017 11:29 pm
Ter Out 10, 2017 11:24 pm
Ter Out 10, 2017 11:12 pm
Ter Out 10, 2017 11:10 pm
Ter Out 10, 2017 11:06 pm
Ter Out 10, 2017 10:37 pm
Ter Out 10, 2017 9:06 pm
Ter Out 10, 2017 7:56 pm
Ter Out 10, 2017 7:42 pm
Ter Out 10, 2017 6:11 pm
Ter Out 10, 2017 11:03 am
Ter Out 10, 2017 10:24 am
MRX
ScorpionG4mer
ScorpionG4mer
ScorpionG4mer
Fagner
Unidade3d5
richerd
Matrirxp
Phph09
Callyde Jr
colosso16
colosso16
Encracker
Joao07
Callyde Jr
EvertonSantos
Fagner
EvertonSantos
Ghosthy
felipehobs1
Weslley
MRX
Callyde Jr
Callyde Jr
Duarte
glauco
luis gustavo
Encracker
thales.ulisses
heliab125
marcelinodns
luis gustavo
Duarte
CodeZone
contaska
contaska
MRX
dstaroski
thales.ulisses
Weslley
dimmuo
dstaroski
glauco
dstaroski
Phph09
eusouoglaydson
Weslley
Fagner
alxgames
Fagner
Fagner
MRX
Callyde Jr
Callyde Jr
TrevorCrazy
luizmauro123
Madness
natanael.olimpio
glauco
luiz12345
Fagner
Felipe Costa
Phph09
ubroly
PatifeCraft
dstaroski
Dom3000
raulframos
fecirineu
fecirineu
MateusWTP
Phph09
PatifeCraft
luizmauro123
Duarte
Phph09
dimmuo
EvertonSantos
BRGC
Callyde Jr
fecirineu
PatifeCraft
Dom3000
PauloFR
PauloFR
PauloFR
PauloFR
PauloFR
TylerDurden
PauloFR
PauloFR
PauloFR
PatifeCraft
felipehobs1
ryan55br
MarcosSchultz
fabriciorsz34
Claudio Ferreira
PatifeCraft

[Ajuda] Variavel não esta recebendo o valor do outro script

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

DÚVIDA [Ajuda] Variavel não esta recebendo o valor do outro script

Mensagem por Ronmaster em Sex Jun 16, 2017 1:07 am

Queria ajuda pra saber o que pode esta errado, estou fazendo um jogo de carta, e estou tentando fazer um sistema com raycast pra selecionar as cartas da mao que serão ativa, ao clicar sobre a carta um objeto fica selecionado e a ideia era usar o objeto da variavel ObjetoSelecionado pra pegar o valor int da variavel IndIST do script da card e usar esse valor no indice da lista da mao para remover o elemento da lista, mas nao esta funcional dessa forma e aparece o erro   NullReferenceException: Object reference not set to an instance of an object  se alguem puder me ajudar  vou postar os 2 scripts


Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class CardsDeck : MonoBehaviour {

 public List<GameObject> deck = new List<GameObject>();

 public List<GameObject> cards = new List<GameObject>();
 public List<GameObject> mao = new List<GameObject>();
 private int cardsSacado = 0;
 private bool showReset = false;

 public List<Transform> CartasM = new List<Transform>();
 GameObject[] Cartas;
 public List<bool> Usado = new List<bool>();
 public GameObject ObjetoSelecionado;
 public bool selecionar = false;
 public Camera kamera;
 public Vector3 distance;
 Transform CartasT;
 public int index = -1;
 public int auxIndice ;
 float leque = 15.0f;
 public float auxLeque;
 
void ResetDeck()
 {
 cardsSacado = 0;
 for (int i = 0; i < mao.Count; i++) {
 Destroy(mao[i]);
 Usado[i] = false;
 }
 CartasM.Clear();
 mao.Clear();
 cards.Clear();
 cards.AddRange(deck);
 showReset = false;
 }

 GameObject SacaCard (){

 if(cards.Count == 0)
 {
 showReset = true;
 return null;
 }

 int card = Random.Range(0, cards.Count - 1);
 GameObject go = GameObject.Instantiate(cards[card]) as GameObject;
 cards.RemoveAt(card);
 index = index + 1;

 if(cards.Count == 0) {
 showReset = true;
 }
 
 return go;
 }

 void Start () {
 
 ResetDeck();
 auxLeque = leque;
 Sort();
 }
 
 // Update is called once per frame
 void Update () {

 SelectCarta ();

 
 if (!showReset) {

 if(Input.GetKeyDown(KeyCode.PageUp))  
 {
 MoveOrdenaCard();
 auxLeque = auxLeque - 1.5f;
 }
 }
 else {
 // Reset button
 if(Input.GetKeyDown(KeyCode.Home))  
 {
 ResetDeck();
 auxLeque = leque;
 }
 }
 // GameOver button
 if(Input.GetKeyDown(KeyCode.PageDown))  
 {
 GameOver();
 }
 }

 void GameOver()
 {
 cardsSacado = 0;
 for (int m = 0; m < mao.Count; m++) {
 Destroy(mao[m]);
 Usado[m] = false;
 }
 CartasM.Clear();
 mao.Clear();
 cards.Clear();
 cards.AddRange(deck);

 }

 public void SelectCarta ()
 {
 if(Input.GetMouseButtonDown (0)){
 
 
 
 RaycastHit hit;
 if(Physics.Raycast(kamera.ScreenPointToRay(Input.mousePosition),out hit, LayerMask.GetMask("Carta")))
 {
 if (hit.collider.gameObject.tag == "Cartas" && Input.GetMouseButtonDown (0)) {
 int indexx = 0;
 ObjetoSelecionado = hit.transform.gameObject;
 ObjetoSelecionado.GetComponent<Card>().IndIST = auxIndice;
 mao.RemoveAt(auxIndice);
 Usado[auxIndice] = false;
 Debug.Log(gameObject);
Debug.Log(auxIndice);
index = index - 1;
auxLeque = auxLeque + 1.5f;

 selecionar = true;
 return;
 }
 
 }
 if(selecionar == true && Input.GetMouseButtonDown (0)){
 selecionar = false;
 return;
 }
 }

 }

 void MoveOrdenaCard()
 {
 GameObject newCard = SacaCard();
 
 if (newCard == null) {
 Debug.Log("Out of Cards");
 showReset = true;
 return;
 }
 mao.Add(newCard);
 Usado[cardsSacado] = true;
 cardsSacado ++;

 Cartas = GameObject.FindGameObjectsWithTag("Cartas");
 for(int i = 0; i<Cartas.Length; i++){
 CartasT = Cartas[i].GetComponent<Transform> ();
 }
 CartasM.Add(CartasT);

 
 
 }
 void Sort()
 {
 Vector3 startPos = new Vector3(distance.x * (CartasM.Count / 2), distance.y * (CartasM.Count / 2),distance.z * (CartasM.Count / 2));
 
 Vector3 direction = startPos;
 direction.y = 0;
 
 for (int i = 0; i < CartasM.Count; i++)
 {
 CartasM[i].GetComponent<Card>().direction = direction;
 direction.x += distance.x;
 
 if (i >= (CartasM.Count / 2))
 direction.y -= startPos.y;
 else
 direction.y += startPos.y;
 }
 }

}

e esse é o script da carta que eu quero acessar

Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class Card : MonoBehaviour {

 public int ID, indice;
 public string Nome;
 public Texture2D imagem;
 //public GameObject MAO;

// Animator anim;
// public bool CartaAtivada = false;
 public GameObject deck;
 public int IndIST;


 public Vector3 direction = new Vector3();
 float FLeque ;

 void Start () {

 deck = GameObject.FindWithTag("Deck");
 IndIST = deck.GetComponent<CardsDeck>().index;
// anim = GetComponent<Animator>();
 
 FLeque = deck.GetComponent<CardsDeck>().auxLeque;
 direction = new Vector3 (FLeque, -14, -24);
 }
 
 // Update is called once per frame
 void Update () {

 
 transform.position = Vector3.Lerp (transform.position, direction, 3 * Time.deltaTime);

 }

}

o erro ocorre na linhas 123 sendo que o objeto é setado na variavel mas nao consigo pegar o valor que eu quero do outro script
avatar
Ronmaster
Membro
Membro

PONTOS : 262
REPUTAÇÃO : 0
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: [Ajuda] Variavel não esta recebendo o valor do outro script

Mensagem por JoelMJunior em Sex Jun 16, 2017 1:59 am

Sou um iniciante em programação, mas nesse caso acho que tem que ver se o objeto que você quer setar em "ObjetoSelecionado" tem Box Collider e se o script Card é um dos seus componentes.

JoelMJunior
MembroAvançado

PONTOS : 241
REPUTAÇÃO : 6
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: [Ajuda] Variavel não esta recebendo o valor do outro script

Mensagem por Gabriel César O em Sex Jun 16, 2017 2:21 am

Ronmaster escreveu:Queria ajuda pra saber o que pode esta errado, estou fazendo um jogo de carta, e estou tentando fazer um sistema com raycast pra selecionar as cartas da mao que serão ativa, ao clicar sobre a carta um objeto fica selecionado e a ideia era usar o objeto da variavel ObjetoSelecionado pra pegar o valor int da variavel IndIST do script da card e usar esse valor no indice da lista da mao para remover o elemento da lista, mas nao esta funcional dessa forma e aparece o erro   NullReferenceException: Object reference not set to an instance of an object  se alguem puder me ajudar  vou postar os 2 scripts


Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class CardsDeck : MonoBehaviour {

 public List<GameObject> deck = new List<GameObject>();

 public List<GameObject> cards = new List<GameObject>();
 public List<GameObject> mao = new List<GameObject>();
 private int cardsSacado = 0;
 private bool showReset = false;

 public List<Transform> CartasM = new List<Transform>();
 GameObject[] Cartas;
 public List<bool> Usado = new List<bool>();
 public GameObject ObjetoSelecionado;
 public bool selecionar = false;
 public Camera kamera;
 public Vector3 distance;
 Transform CartasT;
 public int index = -1;
 public int auxIndice ;
 float leque = 15.0f;
 public float auxLeque;
 
void ResetDeck()
 {
 cardsSacado = 0;
 for (int i = 0; i < mao.Count; i++) {
 Destroy(mao[i]);
 Usado[i] = false;
 }
 CartasM.Clear();
 mao.Clear();
 cards.Clear();
 cards.AddRange(deck);
 showReset = false;
 }

 GameObject SacaCard (){

 if(cards.Count == 0)
 {
 showReset = true;
 return null;
 }

 int card = Random.Range(0, cards.Count - 1);
 GameObject go = GameObject.Instantiate(cards[card]) as GameObject;
 cards.RemoveAt(card);
 index = index + 1;

 if(cards.Count == 0) {
 showReset = true;
 }
 
 return go;
 }

 void Start () {
 
 ResetDeck();
 auxLeque = leque;
 Sort();
 }
 
 // Update is called once per frame
 void Update () {

 SelectCarta ();

 
 if (!showReset) {

 if(Input.GetKeyDown(KeyCode.PageUp))  
 {
 MoveOrdenaCard();
 auxLeque = auxLeque - 1.5f;
 }
 }
 else {
 // Reset button
 if(Input.GetKeyDown(KeyCode.Home))  
 {
 ResetDeck();
 auxLeque = leque;
 }
 }
 // GameOver button
 if(Input.GetKeyDown(KeyCode.PageDown))  
 {
 GameOver();
 }
 }

 void GameOver()
 {
 cardsSacado = 0;
 for (int m = 0; m < mao.Count; m++) {
 Destroy(mao[m]);
 Usado[m] = false;
 }
 CartasM.Clear();
 mao.Clear();
 cards.Clear();
 cards.AddRange(deck);

 }

 public void SelectCarta ()
 {
 if(Input.GetMouseButtonDown (0)){
 
 
 
 RaycastHit hit;
 if(Physics.Raycast(kamera.ScreenPointToRay(Input.mousePosition),out hit, LayerMask.GetMask("Carta")))
 {
 if (hit.collider.gameObject.tag == "Cartas" && Input.GetMouseButtonDown (0)) {
 int indexx = 0;
 ObjetoSelecionado = hit.transform.gameObject;
 ObjetoSelecionado.GetComponent<Card>().IndIST = auxIndice;
 mao.RemoveAt(auxIndice);
 Usado[auxIndice] = false;
 Debug.Log(gameObject);
Debug.Log(auxIndice);
index = index - 1;
auxLeque = auxLeque + 1.5f;

 selecionar = true;
 return;
 }
 
 }
 if(selecionar == true && Input.GetMouseButtonDown (0)){
 selecionar = false;
 return;
 }
 }

 }

 void MoveOrdenaCard()
 {
 GameObject newCard = SacaCard();
 
 if (newCard == null) {
 Debug.Log("Out of Cards");
 showReset = true;
 return;
 }
 mao.Add(newCard);
 Usado[cardsSacado] = true;
 cardsSacado ++;

 Cartas = GameObject.FindGameObjectsWithTag("Cartas");
 for(int i = 0; i<Cartas.Length; i++){
 CartasT = Cartas[i].GetComponent<Transform> ();
 }
 CartasM.Add(CartasT);

 
 
 }
 void Sort()
 {
 Vector3 startPos = new Vector3(distance.x * (CartasM.Count / 2), distance.y * (CartasM.Count / 2),distance.z * (CartasM.Count / 2));
 
 Vector3 direction = startPos;
 direction.y = 0;
 
 for (int i = 0; i < CartasM.Count; i++)
 {
 CartasM[i].GetComponent<Card>().direction = direction;
 direction.x += distance.x;
 
 if (i >= (CartasM.Count / 2))
 direction.y -= startPos.y;
 else
 direction.y += startPos.y;
 }
 }

}

e esse é o script da carta que eu quero acessar

Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class Card : MonoBehaviour {

 public int ID, indice;
 public string Nome;
 public Texture2D imagem;
 //public GameObject MAO;

// Animator anim;
// public bool CartaAtivada = false;
 public GameObject deck;
 public int IndIST;


 public Vector3 direction = new Vector3();
 float FLeque ;

 void Start () {

 deck = GameObject.FindWithTag("Deck");
 IndIST = deck.GetComponent<CardsDeck>().index;
// anim = GetComponent<Animator>();
 
 FLeque = deck.GetComponent<CardsDeck>().auxLeque;
 direction = new Vector3 (FLeque, -14, -24);
 }
 
 // Update is called once per frame
 void Update () {

 
 transform.position = Vector3.Lerp (transform.position, direction, 3 * Time.deltaTime);

 }

}

o erro ocorre na linhas 123 sendo que o objeto é setado na variavel mas nao consigo pegar o valor que eu quero do outro script
talvez te ajude!
avatar
Gabriel César O
Programador

Masculino PONTOS : 1408
REPUTAÇÃO : 210
Idade : 16
Áreas de atuação : (ESTUDANDO SEGUNDO GRAU), (FUÇANDO NO UNITY)){
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: [Ajuda] Variavel não esta recebendo o valor do outro script

Mensagem por dipode em Sex Jun 16, 2017 2:36 am

Ronmaster escreveu:Queria ajuda pra saber o que pode esta errado, estou fazendo um jogo de carta, e estou tentando fazer um sistema com raycast pra selecionar as cartas da mao que serão ativa, ao clicar sobre a carta um objeto fica selecionado e a ideia era usar o objeto da variavel ObjetoSelecionado pra pegar o valor int da variavel IndIST do script da card e usar esse valor no indice da lista da mao para remover o elemento da lista, mas nao esta funcional dessa forma e aparece o erro   NullReferenceException: Object reference not set to an instance of an object  se alguem puder me ajudar  vou postar os 2 scripts


Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class CardsDeck : MonoBehaviour {

 public List<GameObject> deck = new List<GameObject>();

 public List<GameObject> cards = new List<GameObject>();
 public List<GameObject> mao = new List<GameObject>();
 private int cardsSacado = 0;
 private bool showReset = false;

 public List<Transform> CartasM = new List<Transform>();
 GameObject[] Cartas;
 public List<bool> Usado = new List<bool>();
 public GameObject ObjetoSelecionado;
 public bool selecionar = false;
 public Camera kamera;
 public Vector3 distance;
 Transform CartasT;
 public int index = -1;
 public int auxIndice ;
 float leque = 15.0f;
 public float auxLeque;
 
void ResetDeck()
 {
 cardsSacado = 0;
 for (int i = 0; i < mao.Count; i++) {
 Destroy(mao[i]);
 Usado[i] = false;
 }
 CartasM.Clear();
 mao.Clear();
 cards.Clear();
 cards.AddRange(deck);
 showReset = false;
 }

 GameObject SacaCard (){

 if(cards.Count == 0)
 {
 showReset = true;
 return null;
 }

 int card = Random.Range(0, cards.Count - 1);
 GameObject go = GameObject.Instantiate(cards[card]) as GameObject;
 cards.RemoveAt(card);
 index = index + 1;

 if(cards.Count == 0) {
 showReset = true;
 }
 
 return go;
 }

 void Start () {
 
 ResetDeck();
 auxLeque = leque;
 Sort();
 }
 
 // Update is called once per frame
 void Update () {

 SelectCarta ();

 
 if (!showReset) {

 if(Input.GetKeyDown(KeyCode.PageUp))  
 {
 MoveOrdenaCard();
 auxLeque = auxLeque - 1.5f;
 }
 }
 else {
 // Reset button
 if(Input.GetKeyDown(KeyCode.Home))  
 {
 ResetDeck();
 auxLeque = leque;
 }
 }
 // GameOver button
 if(Input.GetKeyDown(KeyCode.PageDown))  
 {
 GameOver();
 }
 }

 void GameOver()
 {
 cardsSacado = 0;
 for (int m = 0; m < mao.Count; m++) {
 Destroy(mao[m]);
 Usado[m] = false;
 }
 CartasM.Clear();
 mao.Clear();
 cards.Clear();
 cards.AddRange(deck);

 }

 public void SelectCarta ()
 {
 if(Input.GetMouseButtonDown (0)){
 
 
 
 RaycastHit hit;
 if(Physics.Raycast(kamera.ScreenPointToRay(Input.mousePosition),out hit, LayerMask.GetMask("Carta")))
 {
 if (hit.collider.gameObject.tag == "Cartas" && Input.GetMouseButtonDown (0)) {
 int indexx = 0;
 ObjetoSelecionado = hit.transform.gameObject;
 ObjetoSelecionado.GetComponent<Card>().IndIST = auxIndice;
 mao.RemoveAt(auxIndice);
 Usado[auxIndice] = false;
 Debug.Log(gameObject);
Debug.Log(auxIndice);
index = index - 1;
auxLeque = auxLeque + 1.5f;

 selecionar = true;
 return;
 }
 
 }
 if(selecionar == true && Input.GetMouseButtonDown (0)){
 selecionar = false;
 return;
 }
 }

 }

 void MoveOrdenaCard()
 {
 GameObject newCard = SacaCard();
 
 if (newCard == null) {
 Debug.Log("Out of Cards");
 showReset = true;
 return;
 }
 mao.Add(newCard);
 Usado[cardsSacado] = true;
 cardsSacado ++;

 Cartas = GameObject.FindGameObjectsWithTag("Cartas");
 for(int i = 0; i<Cartas.Length; i++){
 CartasT = Cartas[i].GetComponent<Transform> ();
 }
 CartasM.Add(CartasT);

 
 
 }
 void Sort()
 {
 Vector3 startPos = new Vector3(distance.x * (CartasM.Count / 2), distance.y * (CartasM.Count / 2),distance.z * (CartasM.Count / 2));
 
 Vector3 direction = startPos;
 direction.y = 0;
 
 for (int i = 0; i < CartasM.Count; i++)
 {
 CartasM[i].GetComponent<Card>().direction = direction;
 direction.x += distance.x;
 
 if (i >= (CartasM.Count / 2))
 direction.y -= startPos.y;
 else
 direction.y += startPos.y;
 }
 }

}

e esse é o script da carta que eu quero acessar

Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class Card : MonoBehaviour {

 public int ID, indice;
 public string Nome;
 public Texture2D imagem;
 //public GameObject MAO;

// Animator anim;
// public bool CartaAtivada = false;
 public GameObject deck;
 public int IndIST;


 public Vector3 direction = new Vector3();
 float FLeque ;

 void Start () {

 deck = GameObject.FindWithTag("Deck");
 IndIST = deck.GetComponent<CardsDeck>().index;
// anim = GetComponent<Animator>();
 
 FLeque = deck.GetComponent<CardsDeck>().auxLeque;
 direction = new Vector3 (FLeque, -14, -24);
 }
 
 // Update is called once per frame
 void Update () {

 
 transform.position = Vector3.Lerp (transform.position, direction, 3 * Time.deltaTime);

 }

}

o erro ocorre na linhas 123 sendo que o objeto é setado na variavel mas nao consigo pegar o valor que eu quero do outro script

Você está esquecendo de verificar se o hit não é nulo:

Código:
[size=14][b]if[/b][/size][size=14] [/size][size=14]([/size][size=14]hit[/size][size=14].[/size][size=14]collider[/size][size=14][color=#666666] != null){[/color][/size]
[color=#666666][font=Consolas, Bitstream Vera Sans Mono, Andale Mono, Monaco, DejaVu Sans Mono, Lucida Console, monospace][size=14]//Aqui coloca o codigo que esteja usando "[/size][/font][/color]hit.collider"
[size=14][color=#666666]}[/color][/size]
avatar
dipode
ProgramadorMaster

PONTOS : 1013
REPUTAÇÃO : 38
Respeito as regras :

Ver perfil do usuário https://github.com/perdugames

Voltar ao Topo Ir em baixo

DÚVIDA Re: [Ajuda] Variavel não esta recebendo o valor do outro script

Mensagem por dipode em Sex Jun 16, 2017 2:38 am

Código:
raycast...

if(hit.collider != null){
//Aqui coloca todo o codigo que esteja usando "hit.collider"

...

}
avatar
dipode
ProgramadorMaster

PONTOS : 1013
REPUTAÇÃO : 38
Respeito as regras :

Ver perfil do usuário https://github.com/perdugames

Voltar ao Topo Ir em baixo

DÚVIDA Re: [Ajuda] Variavel não esta recebendo o valor do outro script

Mensagem por Ronmaster em Sab Jun 17, 2017 2:09 am

Valeu galera eu consegui aqui, no caso antes eu nao estava tentando pegar o valor via getComponent porque dava aquele erro, eu chequei os components fiz todos os testes e esta tudo certo, o raycast tambem ta funcional, mas antes eu nao estava conseguindo pegar o valor via getComponent entao eu mudei a variavel indIST pra static e a igualei à indice e chamei via getComponent novamente no outro script e funcionou, valeu mesmo Very Happy agora ja estou com um outro problema diferente,  vou tentar ver se resolvo
avatar
Ronmaster
Membro
Membro

PONTOS : 262
REPUTAÇÃO : 0
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: [Ajuda] Variavel não esta recebendo o valor do outro script

Mensagem por Ronmaster em Sab Jun 17, 2017 11:59 pm

Galera eu sei que tem como pegar um valor de uma variavel de outro script, mas agora eu queria saber se é possivel modificar ou somar  um valor a uma variavel float por exemplo de um script diferente?
avatar
Ronmaster
Membro
Membro

PONTOS : 262
REPUTAÇÃO : 0
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: [Ajuda] Variavel não esta recebendo o valor do outro script

Mensagem por PauloFR em Dom Jun 18, 2017 12:05 am

Ronmaster escreveu:Galera eu sei que tem como pegar um valor de uma variavel de outro script, mas agora eu queria saber se é possivel modificar ou somar  um valor a uma variavel float por exemplo de um script diferente?
Sim é possivel ;-;

Código:
public class OutroScript : MonoBehaviour {

public static float Numero2;

}
Código:
public float  Numero1,Soma;

void Start () {
    Soma = Numero1 + OutroScript.Numero2;

}

Também da para fazer isso por uma variavel não static... ;-;
avatar
PauloFR
Instrutor

Masculino PONTOS : 1306
REPUTAÇÃO : 312
Idade : 15
Áreas de atuação : Iniciante:Modelagem e Terminal-Linux. Intermediário:C#,Java,HTML e CSS
Respeito as regras :

Ver perfil do usuário http://ppaulofr.blogspot.com.br

Voltar ao Topo Ir em baixo

DÚVIDA Re: [Ajuda] Variavel não esta recebendo o valor do outro script

Mensagem por Ronmaster em Dom Jun 18, 2017 1:10 am

Blz vou testar aqui Smile
avatar
Ronmaster
Membro
Membro

PONTOS : 262
REPUTAÇÃO : 0
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum