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 :D
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
[TUTORIAL] MENU PRINCIPAL - UNITY 5 (5.3 ou superior) (Com UI)
[TUTORIAL] Acionar a vibração do dispositivo
Manager Como fazer um jogo nesse estilo?
Como criar conta de publicador na asset store?
Problema de renderização
[Projeto]Simples em Desenvolvimento The Dolls Battle
Scripts !
Problema com script
Como fazer para aparecer um objeto na tela ao clicar com o mouse ou apertar um botão?
Quando a porta estiver trancada dar tipo uma tremedeira
Sorteio Especial GTA V,HELLO NEIGHBOR,PUBG
SonyVegas com qualidade ruim
Cores invertidas/Estranhas no PC
C# Script de Camera
[RESOLVIDO] Compra de asset
criar um app que atende a vários produtos.
Script para abrir e fechar gaveta
Minimap/Radar/GPS Estilo GTA V
Movimento 8 lados e utilização reflexiva de If e Else If (Resolução Transform).
[PROJETO MOBILE] Defeat the Illuminatis
Duvida sobre o unity IAP (compras na google play)
Programação e autonomia
Client Sincronizar objeto sem ser o player ??? (Networking Unet)
[TUTORIAL] AI Enemy ( Jogos de terror )
[____ADMINISTRAÇÃO____] Por que ninguém responde o seu tópico?
Problema de luz com objetos do ProBuilder
PROCURA-SE DESIGNER 2D e ROTEIRISTA PARA PROJETO EM ANDAMENTO!
[RESOLVIDO] Script para textura 3D
[TUTORIAL] Unity 5 - Como utilizar o Animator
Bug com mesh na animação
Formação de Equipe - programadores de C# na unity
Participe da Game Jam - Jaaj do canal Amdré Young!
movimento do porsonagen junto com objeto
[RESOLVIDO] Som na lanterna falhando
imagem transparente
[ AJUDA] Estou com problemas para acessar índice de uma Lista e realizar uma acao
Diferentes tamanhos de Textura afeta o desempenho do jogo?
[____ADMINISTRAÇÃO____] PRECISO DE AJUDA [DICA PARA SER AJUDADO]
[____APOIE O FÓRUM E O CANAL E GANHE RECOMPENSAS____]
Emulador em seu jogo como Descobrir
[GAME JAM] Consegue Fazer um jogo em 15 dias ?
[TUTORIAL] Lanterna
Textura em 3 dimensões na Unity 2018.2??????
Script que ao clicar em um objeto, abra um formulário
[RESOLVIDO] como atualizar o status do perfil na conta unity
[Projeto] Line Battle
Como Posso editar Animação Generic mixamo ?
[TUTORIAL] Sistema de EXP, upar níveis, entre outros
[AULA] Estrutura de repetição while e do while
Como fazer um analogico para rotaciona a camera do jogador? android
Como mudar de Scene sem perder os valores das variáveis
Como mudar alguma configuração de acordo com a resolução da tela?
Timer
Precisa-se de Criador de sprites.
Como criar um Reflexo falso como do Sonic Adventure?
[ FIND ME ] Game em Desenvolvimento
Compilando pra android
[AULA] Estrutura de repetição for
[AULA] Listas (List)
Como encurtar e melhorar meu código, elevador(+ dúvida sobre programação em unity)
GetActiveScene
[TUTORIAL] C# .NET | Visual Studio - conexão com banco de dados MySQL
[___COMO UTILIZAR O FÓRUM___] Principais botões e suas funções
[TUTORIAL] MOVIMENTO NA ARMA PARA FICAR MAIS REAL!
(dúvida) fazer o player cair de paraquedas estilo pubg
[TUTORIAL] Como criar cénarios 2D muito rapido e facil.
Porta "bugada"
[TUTORIAL] C# .NET | Cores aleatorias RGB
RECRUTA-SE DESIGNER PARA JOGO ONLINE..
[RESOLVIDO] Script de porta trancada com audio
Animation Fps
[RESOLVIDO] Problema com StartCoroutine
[RESOLVIDO] Erro ao usar DLL/Biblioteca do Mysql
R7 - GOOH (resident evil 7)
[ NONAME ] Procura de pessoas interessadas
FPS - Armas e balas
Voice Chat
Jogo - Board Challenge Free
[RESOLVIDO] Gerenciador de arquivos CSV
Editor de vídeo gratuito.
Erro ao usar WWW na unity
[RESOLVIDO] color.a diminuir gradualmente
Pack de áudio/ efeitos sonoros gratuitos.
[TUTORIAL] Cursor do mouse não aparecer durante o jogo
Se eu fazer uma animação diferente pra cada personagem,vai pesar ?
Como fazer um sistema de se esconder?
Dragon Bones [software]
Auto-Update de forma rápida, simples e barata.
Como fazer um botão Joystick que controle o First Person Controller?
Cloud Save por arquivo binario no google play services
[RESOLVIDO] Como editar o texto que eu selecionar ? - (InputField)
Como verificar uma colisão constante ?
[TUTORIAL] CONFIGURANDO O UNITY PARA COMPILAR PARA ANDROID
Como fazer ótimo FPSController com full body?
onde publicar os trabalhos prontos.
[RESOLVIDO] Como usar "?" e ":" ?
[RESOLVIDO] Detectar colisão usando if em C#?
[ENQUETE OFICIAL] Você está vendo o CHAT DO FÓRUM?????
Hoje à(s) 12:37 am
Ontem à(s) 8:16 pm
Ontem à(s) 8:14 pm
Ontem à(s) 7:32 pm
Ontem à(s) 6:39 pm
Ontem à(s) 3:16 pm
Ontem à(s) 3:16 pm
Ontem à(s) 3:10 pm
Ontem à(s) 2:56 pm
Ontem à(s) 2:25 pm
Ontem à(s) 2:20 pm
Ontem à(s) 2:14 pm
Ontem à(s) 2:04 pm
Ontem à(s) 11:55 am
Qui Jul 19, 2018 8:06 pm
Qui Jul 19, 2018 5:20 pm
Qui Jul 19, 2018 4:29 pm
Qui Jul 19, 2018 3:13 pm
Qui Jul 19, 2018 2:29 pm
Qui Jul 19, 2018 10:14 am
Qui Jul 19, 2018 10:10 am
Qui Jul 19, 2018 10:06 am
Qui Jul 19, 2018 1:11 am
Qua Jul 18, 2018 9:18 pm
Qua Jul 18, 2018 9:13 pm
Qua Jul 18, 2018 8:04 pm
Qua Jul 18, 2018 5:33 pm
Qua Jul 18, 2018 4:28 pm
Qua Jul 18, 2018 4:26 pm
Qua Jul 18, 2018 4:09 pm
Qua Jul 18, 2018 2:38 pm
Qua Jul 18, 2018 1:52 pm
Qua Jul 18, 2018 11:30 am
Qua Jul 18, 2018 10:10 am
Qua Jul 18, 2018 9:36 am
Ter Jul 17, 2018 11:46 pm
Ter Jul 17, 2018 8:57 pm
Ter Jul 17, 2018 6:44 pm
Ter Jul 17, 2018 5:38 pm
Ter Jul 17, 2018 5:37 pm
Ter Jul 17, 2018 5:34 pm
Ter Jul 17, 2018 3:58 pm
Ter Jul 17, 2018 3:35 pm
Ter Jul 17, 2018 1:51 pm
Ter Jul 17, 2018 12:15 pm
Seg Jul 16, 2018 8:15 pm
Seg Jul 16, 2018 5:01 pm
Seg Jul 16, 2018 4:01 pm
Seg Jul 16, 2018 3:08 pm
Seg Jul 16, 2018 2:11 pm
Seg Jul 16, 2018 1:32 pm
Seg Jul 16, 2018 9:55 am
Dom Jul 15, 2018 11:46 pm
Dom Jul 15, 2018 10:34 pm
Dom Jul 15, 2018 10:32 pm
Dom Jul 15, 2018 10:03 pm
Dom Jul 15, 2018 9:15 pm
Dom Jul 15, 2018 2:05 pm
Dom Jul 15, 2018 12:42 am
Dom Jul 15, 2018 12:35 am
Sab Jul 14, 2018 11:38 pm
Sab Jul 14, 2018 8:06 pm
Sab Jul 14, 2018 6:54 pm
Sab Jul 14, 2018 4:23 pm
Sab Jul 14, 2018 9:44 am
Sab Jul 14, 2018 9:42 am
Sab Jul 14, 2018 12:58 am
Sex Jul 13, 2018 11:09 pm
Sex Jul 13, 2018 10:20 pm
Sex Jul 13, 2018 8:28 pm
Sex Jul 13, 2018 2:11 pm
Sex Jul 13, 2018 12:39 pm
Sex Jul 13, 2018 11:01 am
Sex Jul 13, 2018 10:31 am
Sex Jul 13, 2018 8:53 am
Qui Jul 12, 2018 11:07 pm
Qui Jul 12, 2018 10:52 pm
Qui Jul 12, 2018 10:14 pm
Qui Jul 12, 2018 9:27 pm
Qui Jul 12, 2018 8:05 pm
Qui Jul 12, 2018 7:33 pm
Qui Jul 12, 2018 7:12 pm
Qui Jul 12, 2018 6:29 pm
Qui Jul 12, 2018 6:11 pm
Qui Jul 12, 2018 5:04 pm
Qui Jul 12, 2018 4:10 pm
Qui Jul 12, 2018 3:41 pm
Qui Jul 12, 2018 3:05 pm
Qui Jul 12, 2018 11:38 am
Qui Jul 12, 2018 10:27 am
Qui Jul 12, 2018 10:27 am
Qui Jul 12, 2018 10:05 am
Qui Jul 12, 2018 9:51 am
Qui Jul 12, 2018 1:16 am
Qua Jul 11, 2018 7:25 pm
Qua Jul 11, 2018 6:33 pm
Qua Jul 11, 2018 5:24 pm
Qua Jul 11, 2018 1:44 pm
Ter Jul 10, 2018 7:54 pm
MarcosSchultz
kaufergomi
FelipeSouza11
Callyde Jr
Unidade3d5
vitorhugo
FelipeSouza11
MayLeone
Tiago95
Tiago95
RafaelSquid1
NKKF
Tegh
Callyde Jr
MayLeone
MRX
natanael.olimpio
LucioHenrique890
Isabela
dstaroski
dstaroski
Tegh
QueriaStarMorto
Extreme Craft
Mourao
Tegh
LucasF
rafilkl2
vitorhugo
FelipeSouza11
Dom3000
QueriaStarMorto
Tegh
dstaroski
RafaelSquid1
JohnRambo
Callyde Jr
Dom3000
dstaroski
dstaroski
dstaroski
Dom3000
RafaelSquid1
LucioHenrique890
RandomStuff
marciosilva
MRX
natanael.olimpio
andradetd
NKKF
FelipeSouza11
dstaroski
Nalfam
hetrodo
LucioHenrique890
dkrazor
dstaroski
NKKF
Tegh
Tegh
AprDev
NKKF
Tegh
dstaroski
gcs13
gcs13
LucioHenrique890
Nalfam
Tegh
Picode
RafaelSquid1
FelipeGD
igorobm
igorobm
RafaelSquid1
Locodapraça
LucioHenrique890
FelipeGD
FelipeGD
NKKF
Nalfam
NKKF
Eduardoro39
FelipeGD
FelipeGD
FelipeGD
RafaelSquid1
Zack2
NKKF
RafaelSquid1
jhobert77
Tiago95
NKKF
FelipeGD
FelipeGD
marciosilva
PauloFR
Lorena Martins
zZAndersonZz

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

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 : 555
REPUTAÇÃO : 4
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 : 518
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
Profissional
Profissional

Masculino PONTOS : 1685
REPUTAÇÃO : 214
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
Avançado
Avançado

PONTOS : 1290
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
Avançado
Avançado

PONTOS : 1290
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 :D agora ja estou com um outro problema diferente,  vou tentar ver se resolvo
avatar
Ronmaster
Membro
Membro

PONTOS : 555
REPUTAÇÃO : 4
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 : 555
REPUTAÇÃO : 4
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 : 1747
REPUTAÇÃO : 357
Idade : 15
Áreas de atuação : Oque será uma área de atuação, se não um modo de manter-nos presos ao sistema

Respeito as regras :

Ver perfil do usuário http://www.schultzgames.com/u8329

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 : 555
REPUTAÇÃO : 4
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Voltar ao Topo

- Tópicos similares

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