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:
facebook login
Objeto ter a mesma rotação que outro em apenas um eixo
[RESOLVIDO] Pegar o meu ping/latencia (Unet)
Animação com mão fechada
Sistema De Marchas para Veiculos
Quando o inimigo ataca todos os inimigos ativam a animação
Rotacionar player no eixo Y da camera
Alguém pode me dizer como usar as texturas,Normal map,Occlusion...
Começar em Game Design / Design
erro com carregamento de dados
Material rosa no HDRender Pipeline como resolvo isso
Instanciate objeto lado a lado
[Duvida] movimentação de nave
[RESOLVIDO] Usando o SetActive para reativar um GameObject, ajuda!
Flamehead MMORPG Indie
erro de java
[TUTORIAL] Desenvolvendo um jogo de quebra-cabeças
[TUTORIAL] Salvar dados com playerprefs facilmente.
[RESOLVIDO] Grafico quadriculado?
duvida com asset store
[TUTORIAL] Assinando um Apk e dicas de instalação e configurações
Como fazer um sistema para conectar objetos?
[RESOLVIDO] Unity sem som
Erro ao tentar compilar para Android
Como iniciar uma animação atraves de um clique em um objeto?
Error ao Gerar a KeyStore do Apk Android
Participe da Game Jam - Jaaj do canal Amdré Young!
[JOGO MOBILE] Defeat the Illuminatis
Alguém sabe como posso aplicar a movimentação agachado?!
Script de Spawn Aleatório
Sugestão para o Fórum - "Área Avançada"
(NavMesh) Objeto "Deslizando"
[____APOIE O FÓRUM E O CANAL E GANHE RECOMPENSAS____]
Alguém conhece algum bom tutorial para aprender Algoritmo genético em C# ?
Mudar cor de area
tela branca ao iniciar videoplayer
COMO FAÇO O SISTEMA DE CHUVA ESTILO ETS2 COM GOTAS NO PARA BRISA?
COMO FAZER SISTEMA DE BHOP ESTILO CS ? (BUNNY HOP)
A Arma mudar de posição de acordo coma movimentação
[PEDIDO] Rig Simples para esse modelo.
[TUTORIAL] Acionar a vibração do dispositivo
[TUTORIAL] CONFIGURANDO O UNITY PARA COMPILAR PARA ANDROID
Animação no movimento do mouse
[___COMO UTILIZAR O FÓRUM___] Principais botões e suas funções
[RESOLVIDO] Colisor
[TUTORIAL] Unity 5 - Wheel Collider, veículos, suspensão realista.
[RESOLVIDO] Como faço um limitador de tiros por distância?
[RESOLVIDO] Mudar a proporção
[RESOLVIDO] Vuforia bug
Objetos (itens) pegos na cena anterior não são destruídos quando volta para ela
Codigo em Python para colocar Imagens em POT (Power Of Two) e .exe
[RESOLVIDO] Error depois de copilar para Android?
[JOGO ANDROID] PLANET DEFENSE
[TUTORIAL] Acessar nomes de arquivos diretamente da pasta
Sistema de IAP Paypal ou parecido
[RESOLVIDO] JOGO SAINDO (ANDROID)
{Equipe} Programador que tenha interesse de participar de uma JAM.
Como fazer Sistema Dia e Noite Segui o sistema de Hora
fazer script pegar arquivo de som, porem o som sera colocado apos a build...
[RESOLVIDO] Mover Plataforma
Formação de Equipe ( Favela Killer)
[TUTORIAL] Escolher a quantos FPS (fixos) o seu jogo deverá rodar.
[Devlog] Lost in the world (1.2_beta)
AJUDA COM SCRIPT DE SISTEMA QTE
Tilesets de Floresta em Pixel Art
[RESOLVIDO] Sistema de login
(UNITY 3D) Mesh Splitter - Como separar uma Mesh em multiplos Game Objects?
Como fazer um sistema de compra de itens?
[JOGO] Tetris em Unity - Para tutorial
Modulo Xbox One
[RESOLVIDO] Pegar e Jogar armas no chão (estilo CS 1.6)
[RESOLVIDO] Como apagar parte da grama do terreno para fazer uma calçada?
[RESOLVIDO] Erro ao Copilar: Bug no personagem.
[Opinião] 2d ou 3d?
Como é feito esse efeito?
Teaser 2 do meu jogo
Shader com efeito de dissolução
[TUTORIAL] Geração de Mesh procedural (estilo Minecraft)
[RESOLVIDO] Erro no Baú
Problema ao mudar sprite entre objetos por conta do uso de joystick
Unity 3d TELA PRETA
[Duvida] Como chamar uma void criada por mim, apenas em determinados momentos.
Corcle (Mobile) - Um jogo simples com um nome estranho.
Bomb Battle Jogo Online Em Desenvolvimento
Ajuda com Visual Studio e MonoDevelop
[RESOLVIDO] Bug o material fica preto
[RESOLVIDO] Error para copilar para Android?
Como colocar um botao do teclado na UI exemplo botao "e"?
[RESOLVIDO] Destruir Mesh na Unity
Destruição de Polígonos
[RESOLVIDO] ATIVAR E DESATIVAR OBJETO PRESSIONANDO BOTÃO
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
[TUTORIAL] Mover objetos 2D e conectar em lugares específicos
[JOGO] Jogo de memória do Pokémon (com som)
[TUTORIAL] Inteligência artificial, inimigo e AIPoints
Dúvida sobre assets da Unity Assets Store
[TUTORIAL] MENU PRINCIPAL - UNITY 5 (5.3 ou superior) (Com UI)
[RESOLVIDO] Sistema de disparos de doze
[Em Desenvolvimento] Battles of Worlds
Ontem à(s) 10:22 pm
Ontem à(s) 6:53 pm
Ontem à(s) 4:48 pm
Ontem à(s) 4:30 pm
Ontem à(s) 1:45 pm
Ontem à(s) 1:20 pm
Ontem à(s) 12:49 pm
Ontem à(s) 8:26 am
Ontem à(s) 3:45 am
Ontem à(s) 1:59 am
Qui Jan 17, 2019 9:23 pm
Qui Jan 17, 2019 7:10 pm
Qui Jan 17, 2019 2:24 am
Qui Jan 17, 2019 1:48 am
Qui Jan 17, 2019 1:28 am
Qua Jan 16, 2019 6:28 pm
Qua Jan 16, 2019 11:35 am
Qua Jan 16, 2019 9:30 am
Ter Jan 15, 2019 10:57 pm
Ter Jan 15, 2019 9:51 pm
Ter Jan 15, 2019 8:20 pm
Ter Jan 15, 2019 5:22 pm
Ter Jan 15, 2019 4:09 pm
Ter Jan 15, 2019 3:50 pm
Ter Jan 15, 2019 2:06 pm
Ter Jan 15, 2019 1:50 pm
Ter Jan 15, 2019 12:26 pm
Ter Jan 15, 2019 10:49 am
Ter Jan 15, 2019 3:27 am
Ter Jan 15, 2019 3:23 am
Ter Jan 15, 2019 3:19 am
Ter Jan 15, 2019 3:15 am
Ter Jan 15, 2019 3:13 am
Ter Jan 15, 2019 3:06 am
Ter Jan 15, 2019 3:04 am
Ter Jan 15, 2019 2:58 am
Ter Jan 15, 2019 2:47 am
Ter Jan 15, 2019 2:39 am
Seg Jan 14, 2019 6:58 pm
Seg Jan 14, 2019 5:54 pm
Seg Jan 14, 2019 2:20 pm
Seg Jan 14, 2019 7:28 am
Dom Jan 13, 2019 6:19 pm
Dom Jan 13, 2019 9:52 am
Sab Jan 12, 2019 8:10 pm
Sab Jan 12, 2019 4:08 pm
Sab Jan 12, 2019 2:41 pm
Sex Jan 11, 2019 10:28 pm
Sex Jan 11, 2019 8:41 pm
Sex Jan 11, 2019 8:31 pm
Sex Jan 11, 2019 12:11 pm
Sex Jan 11, 2019 7:33 am
Sex Jan 11, 2019 2:18 am
Qui Jan 10, 2019 11:36 pm
Qui Jan 10, 2019 1:04 pm
Qui Jan 10, 2019 12:58 pm
Qui Jan 10, 2019 12:50 pm
Qui Jan 10, 2019 9:23 am
Qua Jan 09, 2019 9:33 pm
Qua Jan 09, 2019 2:47 am
Qua Jan 09, 2019 12:17 am
Qua Jan 09, 2019 12:02 am
Ter Jan 08, 2019 10:24 pm
Ter Jan 08, 2019 5:00 pm
Ter Jan 08, 2019 3:51 pm
Seg Jan 07, 2019 10:42 pm
Seg Jan 07, 2019 10:26 am
Seg Jan 07, 2019 12:43 am
Dom Jan 06, 2019 5:16 pm
Dom Jan 06, 2019 2:22 pm
Sex Jan 04, 2019 3:15 pm
Sex Jan 04, 2019 2:29 pm
Sex Jan 04, 2019 2:25 pm
Sex Jan 04, 2019 12:38 pm
Qui Jan 03, 2019 12:35 am
Qua Jan 02, 2019 9:46 pm
Qua Jan 02, 2019 8:56 pm
Qua Jan 02, 2019 6:48 pm
Qua Jan 02, 2019 5:32 pm
Qua Jan 02, 2019 2:34 pm
Qua Jan 02, 2019 11:17 am
Seg Dez 31, 2018 6:23 pm
Seg Dez 31, 2018 5:53 pm
Seg Dez 31, 2018 11:29 am
Seg Dez 31, 2018 12:26 am
Dom Dez 30, 2018 9:45 pm
Dom Dez 30, 2018 8:53 pm
Dom Dez 30, 2018 3:15 pm
Dom Dez 30, 2018 12:49 pm
Dom Dez 30, 2018 12:46 pm
Sab Dez 29, 2018 4:06 pm
Sex Dez 28, 2018 9:34 pm
Sex Dez 28, 2018 7:16 pm
Sex Dez 28, 2018 3:31 pm
Sex Dez 28, 2018 3:29 pm
Sex Dez 28, 2018 3:20 pm
Sex Dez 28, 2018 3:17 pm
Sex Dez 28, 2018 2:11 pm
Sex Dez 28, 2018 6:20 am
Zack2
CaioItz
luiz12345
Zack2
Gabryellx007
MayLeone
CaioItz
glauco
Joshuaaaa
MarcosSchultz
MarcosSchultz
MayLeone
MarcosSchultz
bielTuvel
Skurb
zZAndersonZz
MayLeone
dstaroski
heitor
MarcosSchultz
rafaelllsd
henriquegames501
Daniel Dória
dstaroski
dstaroski
Duarte
NKKF
dstaroski
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
dstaroski
BRGC
Callyde Jr
Callyde Jr
TecnoGames
dstaroski
MayLeone
NKKF
bielTuvel
Priste_Hell
Callyde Jr
Wanderli
Andeton
Callyde Jr
MateusPignatti
MayLeone
Callyde Jr
NoobZ
AladoAlan
francisco barroso
luiz12345
speedluk
zeca urubu
Rafal
NKKF
Diego Felix
ismarspn
Zack2
Dom3000
henriquegames501
conceptfac
guimaraf
lhm
EricKBMS
5pntozero
Daniel Dória
Madness
Patrick
AnderGames
kalango studios games
EricKBMS
francisco barroso
dstaroski
MayLeone
PauloFR
glauco
francisco barroso
Dom3000
Callyde Jr
Callyde Jr
vitorhugo
vitorhugo
Diego Felix
JohnRambo
NKKF
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
diegopds
Dom3000

Dúvida sobre método de acesso as variáveis

Ir em baixo

DÚVIDA Dúvida sobre método de acesso as variáveis

Mensagem por guimaraf em Qua Jun 13, 2018 9:36 am

Olá pessoal, estudo a pouco tempo C#, orientação a objetos infelizmente ainda não é meu forte, mas estou melhorando bastante.
Ao acompanhar alguns vídeos, ler documentações sobre a engine e acompanhar aqui no forum sobre Unity, já vi diversas formas de acesso as variáveis, então resolvi perguntar aqui qual seria o método mais adequado e os motivos para tal.

Fiz um pequeno Script de teste com os métodos que vejo o pessoal usando, scripts bem simples mesmo para discutir a dúvida.

Código:
using UnityEngine;

public class ClasseOrigem : MonoBehaviour {

    public int valor = 1;
}

Código:
using UnityEngine;

public class ClasseTeste : MonoBehaviour
{
    int valorRecebe;
    int valorRecebe2;
    int valorRecebe3;

    public void Start()
    {
        valorRecebe = FindObjectOfType<ClasseOrigem>().valor; //Método 1

        valorRecebe2 = GetComponent<ClasseOrigem>().valor; //Método 2

        ClasseOrigem a = GetComponent<ClasseOrigem>(); //Método 3
        valorRecebe3 = a.valor;

        print(valorRecebe);
        print(valorRecebe2);
        print(valorRecebe3);
    }
}


Deixei da forma mais clara possível, quem souber responder, fico muito agradecido.
avatar
guimaraf
Avançado
Avançado

Masculino PONTOS : 759
REPUTAÇÃO : 25
Idade : 36
Áreas de atuação : Programação de jogos e técnico de informática
Respeito as regras :

Ver perfil do usuário http://guimaraf.github.io

Voltar ao Topo Ir em baixo

DÚVIDA Re: Dúvida sobre método de acesso as variáveis

Mensagem por MayLeone em Qua Jun 13, 2018 9:50 am

Os três estão certos, só o primeiro pode dar um resultado inesperado se tiver mais de um objeto na cena com esse script.
Eu uso sempre o segundo, mas dessa forma:

Código:
ClasseOrigem classe;
void Start(){
classe = GetComponent<ClasseOrigem>();
}

Mas isso claro, apenas se eu quiser ter acesso a outras propriedades da classe, e for utilizá-la mais de uma vez no código.

Agora, se a variável é algo que vale pro jogo todo e não é apenas uma propriedade de instância, como a vida do player por exemplo, que vai ser a mesma para todos os scripts, eu deixo ela como estática:

Código:
public class Teste{
public static int vida;}

E chamo ela assim externamente:

Código:
if(Teste.vida > 0)
avatar
MayLeone
ProgramadorMaster

Feminino PONTOS : 753
REPUTAÇÃO : 230
Áreas de atuação : Unity, C++/C#, HTML, CSS, JS, jQuery, PHP, MySQL, XML, Blender
Respeito as regras :

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

Voltar ao Topo Ir em baixo

DÚVIDA Re: Dúvida sobre método de acesso as variáveis

Mensagem por guimaraf em Qua Jun 13, 2018 10:48 am

Neste caso eu fiz este exemplo para discutir estes 3 métodos, não uso em projetos estes scripts, mas entendi o ponto.
Também conheço sobre variáveis e métodos estáticos.

Na questão de desempenho, tem alguma diferença?
avatar
guimaraf
Avançado
Avançado

Masculino PONTOS : 759
REPUTAÇÃO : 25
Idade : 36
Áreas de atuação : Programação de jogos e técnico de informática
Respeito as regras :

Ver perfil do usuário http://guimaraf.github.io

Voltar ao Topo Ir em baixo

DÚVIDA Re: Dúvida sobre método de acesso as variáveis

Mensagem por MayLeone em Qua Jun 13, 2018 11:41 am

@guimaraf escreveu:Neste caso eu fiz este exemplo para discutir estes 3 métodos, não uso em projetos estes scripts, mas entendi o ponto.
Também conheço sobre variáveis e métodos estáticos.

Na questão de desempenho, tem alguma diferença?
Sim, é um pouco óbvio que você não utilize isso, só demonstrei também uma outra forma de declaração além das citadas.

No caso de desempenho, o GetComponent dentro de métodos como o Update e o FixedUpdate pode não ser o mais recomendável de usar, como você pode ver nessa discussão no fórum da Unity: https://answers.unity.com/questions/712804/getcomponent-in-void-update.html portanto, o mais recomendável é sempre fazer essa referência no Start ou no Awake, como eu fiz no primeiro exemplo!

Já o FindObjectOfType é mais crítico, pois é como eu disse, ele pode gerar um resultado inesperado se mais de um objeto na cena tiver esse script, sem dizer o que a própria documentação da Unity cita:

Please note that this function is very slow. It is not recommended to use this function every frame. In most cases you can use the singleton pattern instead.
Não é recomendável usar esse comando em métodos como Update porque ele é lento e pode diminuir o frame rate do seu jogo.

Você pode ler um tópico mais detalhado sobre a diferença entre GetComponent e FindObjectOfType nesse link: https://stackoverflow.com/questions/30310847/gameobject-findobjectoftype-vs-getcomponent

Com relação à performance entre os outros 2, não tem muita diferença, o segundo e o terceiro métodos são praticamente a mesma coisa, só que o terceiro é mais extenso e nesse caso não há tanta necessidade de fazer isso. 
Mas há sempre o questionamento do que será melhor para seu código em determinada situação, porém na maioria dos casos, o segundo método é mais eficiente.

É óbvio que estamos discutindo esses métodos com relação à referência externa, mas no caso de querer ter acesso ao componente do próprio objeto que possui o script, o GetComponent é o ideal, aliás, essa é a função dele.
avatar
MayLeone
ProgramadorMaster

Feminino PONTOS : 753
REPUTAÇÃO : 230
Áreas de atuação : Unity, C++/C#, HTML, CSS, JS, jQuery, PHP, MySQL, XML, Blender
Respeito as regras :

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

Voltar ao Topo Ir em baixo

DÚVIDA Re: Dúvida sobre método de acesso as variáveis

Mensagem por guimaraf em Qua Jun 13, 2018 3:11 pm

Muito obrigado, você me ajudou bastante, não sabia da recomendação da Unity sobre este tipo de evento.

Esta discussão deixe bem claro os motivos, o que eu queria saber, além da sua explicação é claro.
https://stackoverflow.com/questions/30310847/gameobject-findobjectoftype-vs-getcomponent

Muito obrigado.

Caso alguém queira fechar o tópico.
avatar
guimaraf
Avançado
Avançado

Masculino PONTOS : 759
REPUTAÇÃO : 25
Idade : 36
Áreas de atuação : Programação de jogos e técnico de informática
Respeito as regras :

Ver perfil do usuário http://guimaraf.github.io

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