COMO fazer para pegar variaveis privadas de outro script?
+2
wischutz
Dom3000
6 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
COMO fazer para pegar variaveis privadas de outro script?
galera estou com um script com 3000 linhas e tenho mais de sem variaveis que prescisam ser publicas para que outro script tenha acesso a elas mas queria saber se tem uma maneira de deixar elas privadas e ainda poder acessar elas
Re: COMO fazer para pegar variaveis privadas de outro script?
Você quer só acessar ou modificar?
Você pode criar os métodos GET e SET delas e chamar na instância.
Você pode criar os métodos GET e SET delas e chamar na instância.
wischutz- Membro
- PONTOS : 3576
REPUTAÇÃO : 15
Respeito as regras :
Re: COMO fazer para pegar variaveis privadas de outro script?
wischutz escreveu:Você quer só acessar ou modificar?
Você pode criar os métodos GET e SET delas e chamar na instância.
quero acessar uma variavel privada do script1 com o script 2, mas se a variavel do script 1 for privada ela nao pode ser acessada nem modificada de aneira normal usando o GETcomponent
Re: COMO fazer para pegar variaveis privadas de outro script?
Exemplo:
No script onde você tem as variáveis provadas, você cria um método de ret
O tipo do método deve ser o mesmo da variável que quer retornar.
No script onde você tem as variáveis provadas, você cria um método de ret
- Código:
//para consultar
public int RetornaExemplo(){
return var;// nome da variável privada
}
//para modificar
public void AumentaExemplo(int qtd){
var += qtd;
}
O tipo do método deve ser o mesmo da variável que quer retornar.
wischutz- Membro
- PONTOS : 3576
REPUTAÇÃO : 15
Respeito as regras :
Re: COMO fazer para pegar variaveis privadas de outro script?
e pelo metodo SerializeField ? estive tentand usar mas nao estou consiguindo
Re: COMO fazer para pegar variaveis privadas de outro script?
A forma correta é usando Getters e Setters, como voce disse q nao pode ser via GetComponent usa Singleton Pattern. vou lhe da um exemplo prático.
Obs1: No caso abaixo lhe dei exemplo de Get e Set auto-implementados. Mas voce tabem poderia fazer da seguinte forma:
Obs2: Por convenção um Getter ou Setter deve começar com a Letra Maíuscula, diferenciando da variavel que vc vai modificar/acessar. (O nome de ambas deve ser igual )
Obs2: Get e Set podem ter modificadores pra facilitar o acesso.
No caso na classe que voce quer acessar, voce usaria da seguinte forma:
Obs1: No caso abaixo lhe dei exemplo de Get e Set auto-implementados. Mas voce tabem poderia fazer da seguinte forma:
Obs2: Por convenção um Getter ou Setter deve começar com a Letra Maíuscula, diferenciando da variavel que vc vai modificar/acessar. (O nome de ambas deve ser igual )
- Código:
private float totalLife;
public float TotaLife
{
get
{
return totalLife;
}
set
{
totalLife = value;
}
}
Obs2: Get e Set podem ter modificadores pra facilitar o acesso.
- Código:
using UnityEngine;
using System.Collections;
public abstract class BaseLife : MonoBehaviour {
public float CurrentLife { get; set; }
public float TotalLife { get; set; }
public static BaseLife instance;
private void Awake()
{
if (instance != null)
{
Destroy(gameObject);
}
else
{
instance = this;
}
}
protected void Start()
{
CurrentLife = TotalLife;
}
public void Damage(float _damageAmount)
{
OnDamage();
CurrentLife -= _damageAmount;
if (CurrentLife <= 0)
{
OnDestroy();
}
}
protected abstract void OnDamage();
protected abstract void OnDestroy();
}
No caso na classe que voce quer acessar, voce usaria da seguinte forma:
- Código:
Baselife.instance.TotalLife = 100f;
Re: COMO fazer para pegar variaveis privadas de outro script?
cara esse seu script é muito avançado pqp kkkk,nao entendi nada
Re: COMO fazer para pegar variaveis privadas de outro script?
Não tem nada de avançado isso aí é o básico de c# kkkk
Bom, se vc quer apenas "ver" a variavel private, usa [SerializeField], coloca ele em cima da variavel ou na frente da qual vc quer q ela aparece no inspector
Bom, se vc quer apenas "ver" a variavel private, usa [SerializeField], coloca ele em cima da variavel ou na frente da qual vc quer q ela aparece no inspector
Re: COMO fazer para pegar variaveis privadas de outro script?
quero acessar de desse jeio
Script1
script2
Script1
- Código:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.Scripting;
using System;
public class Poder : MonoBehaviour {
bool AI;
void update(){}
script2
- Código:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.Scripting;
using System;
public class AI : MonoBehaviour {
void update(){
GetComponent<Poder>().bool=true;
}
Re: COMO fazer para pegar variaveis privadas de outro script?
você deve tornar a variável pública e acessá-la pelo nome, e não pelo tipo.
JohnRambo- Moderador
- PONTOS : 5174
REPUTAÇÃO : 661
Idade : 24
Áreas de atuação : Unity;
Programação;
Música e Sonorização;
Graduado em Análise e Desenvolvimento de Sistemas;
Respeito as regras :
Re: COMO fazer para pegar variaveis privadas de outro script?
kk14 escreveu:ei pode me ajudar estou fazendo um game runer 2d, quero q meu personagem pule para plataforma de cima , nas ele colide com ela
seria interessante um novo tópico para tratar desse assunto, explicações claras, scripts que estão sendo usados para os testes, etc.
JohnRambo- Moderador
- PONTOS : 5174
REPUTAÇÃO : 661
Idade : 24
Áreas de atuação : Unity;
Programação;
Música e Sonorização;
Graduado em Análise e Desenvolvimento de Sistemas;
Respeito as regras :
Re: COMO fazer para pegar variaveis privadas de outro script?
John Rambo escreveu:você deve tornar a variável pública e acessá-la pelo nome, e não pelo tipo.
esse é problema John eu quero acessa la mesmo que ela seja privada
Re: COMO fazer para pegar variaveis privadas de outro script?
use métodos ou propriedades para retorna o valores
como o dimmuo ja mostrou
Ex
como o dimmuo ja mostrou
Ex
- Código:
public class Ex{
private int value;
public int getValue(){
return value;
}
}
- Código:
public class Get{
public Ex classe;
public int recebe;
void Update(){
recebe = classe.GetValue();
}
}
Weslley- Moderador
- PONTOS : 5729
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: COMO fazer para pegar variaveis privadas de outro script?
agora deu para entender vc deixou mais simples :D
mas dessa maneira da muito trabalho vou deixar publica mesmo mas valeu a duvida
mas dessa maneira da muito trabalho vou deixar publica mesmo mas valeu a duvida
Weslley- Moderador
- PONTOS : 5729
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: COMO fazer para pegar variaveis privadas de outro script?
A questão é, por que quer deixar a variável privada? apenas para ocultá-la do inspector?
Re: COMO fazer para pegar variaveis privadas de outro script?
Marcos pq existem muitas variaveis tipo mais de 100 dai fica dificil de achar, e se perde um tempo com isso
Re: COMO fazer para pegar variaveis privadas de outro script?
usa
[HideInInspector]
exemplo:
[HideInInspector]
exemplo:
- Código:
[HideInInspector] public int p = 5;
Tópicos semelhantes
» Variáveis para usar em outro script
» [RESOLVIDO] Acessar Variáveis De outro Script
» [RESOLVIDO] Como fazer para colocar um objeto Parente do outro?
» [RESOLVIDO] COMO FAZ PARA FAZER 2 TERRAINS TOTALMENTE DIFERENTES DO OUTRO?
» Como faço para distanciar um objeto do outro pelo script?
» [RESOLVIDO] Acessar Variáveis De outro Script
» [RESOLVIDO] Como fazer para colocar um objeto Parente do outro?
» [RESOLVIDO] COMO FAZ PARA FAZER 2 TERRAINS TOTALMENTE DIFERENTES DO OUTRO?
» Como faço para distanciar um objeto do outro pelo script?
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos