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:
ESSE EO MEU JOGO QUE EU ESTOU DESENVOLVENDO (VERSAO ALPHA)
Tela (Screen) Android e Joystick adaptável à tela !
[DÚVIDA] SOM SAIR QUANDO CHEGAR PERTO DE UM OBJETO
Tela Ajustável (Android)
Como girar o mundo?
Ajuda Jogo de Luta 2D precisando de AI CPU inteligente
Dúvida no uso do If para esta ocasião ?
ALGUEM SABE COMO POSSO DESATIVAR O LOOP DA ANIMAÇAO
(AVALIEM) Sistema de IA para pedestre e trafego e ROTAS COM RAIN
Mais um Teste do jogo em andamento
PHP e MYSQLI
Sistema de Nevoa
TEM COMO COLOCAR UM VIDEO NO CANVAS?
Como rodar uma animação feita em shape keys do blender na unity?
Erro no Script
COMO EXPORTAR MEU PROJETO E DAR CONTINUAÇÃO POR OUTRO COMPUTADOR ?
MEU JOGO ANDROID
Asset Sistema de rajada
Parentear Objetos por script C#
Preciso de Programador e Modelador para jogo de tiro futurista
BAIXE GRÁTIS MODELOS 3D (FUZIL FOTO REALÍSTICO - 22-06-2017)
[Unity] - Criar botão em C#
[AVALIAÇÃO] AVALIEM MEU JOGO MOBILE
Bugs da Unity
Meu Canva nao para de tremer o que fazer?
Duvidas multiplayer online em terceira pessoa
Defeito com colisao
Script de Mover - Estilo Subway Surfs
Erro estranho Invalid AABB a
não esta salvando o score
Ajuda com scripts de inimigo e player'' interação de zumbi e player''
Mudar Gráfico
[TUTORIAL] Mover, Girar e lançar objetos com o mouse ( estilo Amnesia )
[TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera
[Resolvido] Relacionada a Objetos em Arrays.
Modelagem de personagens
Como sair desse loop?
Como instanciar muitos objetos?
[TUTORIAL] 43 ÓTIMAS DICAS DE OTIMIZAÇÃO PARA JOGOS MOBILE (Android)
[Game] World Adventure (Nova Beta)
[_____CRONOGRAMA DO CANAL_____]
[UPDATE DO MEU PROJETO] - Veja e avalie o sistema de combate do meu jogo!
Problema com Sprite
Sistema de Susto Cronometrado
[TUTORIAL] Camera de visão noturna (Night vision) na Unity 5
Script de Mover
[Duvida] ScrollBar
- -[ASSETS PARA GAMES]- -
[Votação] História futurista ou mais antiga ._.
[TUTORIAL] AI Enemy ( Jogos de terror )
-[ASSETS PARA GAMES/ALGUNS]-
esse e o meu jogo "a floresta" que estou fazendo VEJAM O VIDEO
Problema esquisito com botoes depois de fazer a build
[Duvida] Decrescer uma Array.
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
Como mudar o sprite?
[TUTORIAL] Unity 5 - Wheel Collider, veículos, suspensão realista.
Glitch visual
Probleminha em um script que fiz
[TUTORIAL] MENU PRINCIPAL - UNITY 5 (5.3 ou superior) (Com UI)
Escolha de Controle para Android
Como instanciar na posição desejada (Canvas)?
[TUTORIAL] UNITY 5 - Efeito submerso (underwater effect), distorção da água e gotas na tela
Sistema de Missao e Recompensa!
[____APOIE O FÓRUM E O CANAL E GANHE RECOMPENSAS____]
[Duvida] Como Deixar O Texto Mais Bonito.
Animação de inimigo não funciona
[Dica] Como converter JAVA SCRIPT para C#
Projeto, Recrutamento! Jogo de terror 3D " Sem Medo"
[Desabilitar gravidade de um Character Controller]
Primeira GamePlay do meu jogo de fps multiplayer (em desenvolvimento)
Cenários Espaciais vs Escala
Jogo para Android para testar
Atualizado (The Pyramid 1.1.1)
Fighters for honor(Jogo da segunda guerra mundial)
Ajuda Erro ao compilar Android
Script não compila com monodevelop
Imagem personalizada no menu de configuração [PRINT]
Demo Terror
[RESOLVIDO] Problema depois de passar para nivel 3
efeitos sonoros
[Modelo 3D - Avaliação] Sniper M700 LowPoly
PHP numeros inteiro?
CONTRATANDO ANIMADOR
Asset para game de terror
[Modelo 3D] AK-47
[DEVLOG - 17-06-17] Projeto - Girl Blade
jogo quiz 2D unity 5...
Ajuda com Script
Duvida com o Pack UFPS
[PEDIDO] Gostaria que avaliaçe meu Cenario LOW POLY
(Resolvido)Monodevelop
Como se faz uma copia de uma cena?
[Equipe] Equipe para jogo tower defense low poly
Como faço um sistema de sanidade (estilo amnesia)
[Ajuda] Variavel não esta recebendo o valor do outro script
Material Editor
Como sera que fizeram o sistema de hackear do watch dogs?
Como desativa um script dentro de outro?
Hoje à(s) 6:13 am
Hoje à(s) 1:12 am
Hoje à(s) 1:10 am
Hoje à(s) 12:34 am
Hoje à(s) 12:09 am
Ontem à(s) 11:17 pm
Ontem à(s) 10:57 pm
Ontem à(s) 9:38 pm
Ontem à(s) 8:26 pm
Ontem à(s) 8:24 pm
Ontem à(s) 7:37 pm
Ontem à(s) 7:18 pm
Ontem à(s) 5:16 pm
Ontem à(s) 2:31 pm
Ontem à(s) 2:28 pm
Ontem à(s) 12:34 pm
Ontem à(s) 12:33 pm
Ontem à(s) 12:30 pm
Ontem à(s) 12:20 pm
Ontem à(s) 12:10 pm
Ontem à(s) 11:08 am
Ontem à(s) 9:37 am
Ontem à(s) 8:01 am
Qua Jun 21, 2017 10:19 pm
Qua Jun 21, 2017 10:08 pm
Qua Jun 21, 2017 9:31 pm
Qua Jun 21, 2017 8:39 pm
Qua Jun 21, 2017 8:39 pm
Qua Jun 21, 2017 8:34 pm
Qua Jun 21, 2017 8:08 pm
Qua Jun 21, 2017 7:35 pm
Qua Jun 21, 2017 6:12 pm
Qua Jun 21, 2017 4:31 pm
Qua Jun 21, 2017 2:12 pm
Qua Jun 21, 2017 1:48 pm
Qua Jun 21, 2017 11:52 am
Qua Jun 21, 2017 12:25 am
Ter Jun 20, 2017 11:40 pm
Ter Jun 20, 2017 11:19 pm
Ter Jun 20, 2017 11:14 pm
Ter Jun 20, 2017 10:59 pm
Ter Jun 20, 2017 10:56 pm
Ter Jun 20, 2017 9:35 pm
Ter Jun 20, 2017 9:17 pm
Ter Jun 20, 2017 9:11 pm
Ter Jun 20, 2017 7:25 pm
Ter Jun 20, 2017 7:24 pm
Ter Jun 20, 2017 6:57 pm
Ter Jun 20, 2017 6:34 pm
Ter Jun 20, 2017 6:32 pm
Ter Jun 20, 2017 6:05 pm
Ter Jun 20, 2017 6:01 pm
Ter Jun 20, 2017 4:57 pm
Ter Jun 20, 2017 1:53 pm
Ter Jun 20, 2017 1:23 pm
Ter Jun 20, 2017 1:18 pm
Ter Jun 20, 2017 1:13 pm
Ter Jun 20, 2017 12:55 pm
Ter Jun 20, 2017 12:52 pm
Ter Jun 20, 2017 12:51 pm
Ter Jun 20, 2017 12:41 pm
Ter Jun 20, 2017 12:36 pm
Ter Jun 20, 2017 12:31 pm
Ter Jun 20, 2017 12:27 pm
Ter Jun 20, 2017 12:24 pm
Ter Jun 20, 2017 12:20 pm
Ter Jun 20, 2017 12:15 pm
Ter Jun 20, 2017 10:33 am
Ter Jun 20, 2017 1:11 am
Seg Jun 19, 2017 11:55 pm
Seg Jun 19, 2017 10:32 pm
Seg Jun 19, 2017 10:25 pm
Seg Jun 19, 2017 10:23 pm
Seg Jun 19, 2017 7:56 pm
Seg Jun 19, 2017 7:51 pm
Seg Jun 19, 2017 7:39 pm
Seg Jun 19, 2017 7:27 pm
Seg Jun 19, 2017 5:37 pm
Seg Jun 19, 2017 4:47 pm
Seg Jun 19, 2017 4:16 pm
Seg Jun 19, 2017 12:55 pm
Seg Jun 19, 2017 12:52 pm
Seg Jun 19, 2017 11:59 am
Seg Jun 19, 2017 11:35 am
Seg Jun 19, 2017 10:56 am
Seg Jun 19, 2017 9:00 am
Seg Jun 19, 2017 6:57 am
Dom Jun 18, 2017 9:29 pm
Dom Jun 18, 2017 6:54 pm
Dom Jun 18, 2017 6:38 pm
Dom Jun 18, 2017 6:08 pm
Dom Jun 18, 2017 6:06 pm
Dom Jun 18, 2017 4:06 pm
Dom Jun 18, 2017 2:49 pm
Dom Jun 18, 2017 1:09 pm
Dom Jun 18, 2017 1:10 am
Dom Jun 18, 2017 12:14 am
Sab Jun 17, 2017 11:45 pm
Sab Jun 17, 2017 10:32 pm
glauco
Gabriel César O
Gabriel César O
SmithSchuldiner
Priste_Hell
niao
niao
marcos4503
Zecandy
Zecandy
Callyde Jr
bitgames
glauco
Willian Wii
michelly
Callyde Jr
marcos4503
Dom3000
marcos4503
edu094
Zecandy
Gilliard
dstaroski
marcos4503
Dom3000
weslleyFx
Dom3000
Duarte
Dom3000
marcos4503
Robinsandi
RenanKrause
Phoenix Wright
marcos4503
dstaroski
sabbath
JoelMJunior
JoelMJunior
thzin
Mateus2583
thzin
marcos4503
Blindado
PauloFR
tom ramber
bruxamissi
ffabim
PauloFR
PauloFR
Joaopm1
Chilinger
Chilinger
DUT
rafaelllsd
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
dstaroski
MateusWTP
Bruno11playerG
NyanHeavyBR
NyanHeavyBR
marcos4503
Callyde Jr
Lteo
marcos4503
zZAndersonZz
DUT
SpartanoLeonidas300
dstaroski
Gabriel César O
Gabriel César O
Callyde Jr
fecirineu
iagokennedyy
Mic4el
dstaroski
Joy29
PauloFR
Diego Felix
Gabriel César O
Zecandy
DUT
bitgames
Ghosthy
Ronmaster
PauloFR
marcos4503
DUT

[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 : 141
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 : 107
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 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 : 952
REPUTAÇÃO : 134
Idade : 15
Á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 : 897
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 : 897
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 : 141
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 : 141
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 : 991
REPUTAÇÃO : 261
Idade : 14
Áreas de atuação : Iniciante:Modelagem e Terminal-Linux. Intermediário:C# e Java
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 : 141
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