Comunicação entre scripts
4 participantes
Página 1 de 1
Comunicação entre scripts
Olá, gostaria saber com posso pegar valores(informações) de um script e enviar para outro, e receber informações de outro script, e se possível com um exemplo. Agradeço desde já.
rafaelholanda- Iniciante
- PONTOS : 2164
REPUTAÇÃO : 1
Idade : 28
Respeito as regras :
Re: Comunicação entre scripts
Use GetComponent... Ai no nome do componente, você coloca o nome do outro código.
OBS: Para conseguir acessar a variável através de outros códigos, a variável deve ser pública, exemplo (public float nomeDaVar;)
Re: Comunicação entre scripts
Exeplos aqui;
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayStatus : MonoBehaviour{
public int vidaMax = 100;
public int vidaAtual;
public bool ativo;
public static PlayStatus instance;//Instanciar script
void Start()
{
instance = this;
vidaAtual = vidaMax;
}
void Update()
{
if ( Input.GetButton("Fire2")){
PlayerController.instance.vidaAtual -= 1;//aqui tiro pouco da vida atual do outro script
}
}
}
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour{
public int vidaMax;
public int vidaAtual;
public bool ativo;
public static PlayerController instance;//Instanciar script
void Start()
{
vidaMax = PlayStatus.instance.vidaMax;//aqui eu informo que a vicaMax e igual ao outro script
instance = this;
vidaAtual = vidaMax;
}
void Update()
{
if ( Input.GetButton("Fire1")){
PlayStatus.instance.vidaAtual -= 1;//aqui tiro pouco da vida atual do outro script
}
}
}
Re: Comunicação entre scripts
Tentei usar o getcomponent mas esta dando erro, meu código é o seguinte,
PegaItem.OnTriggerEnter (UnityEngine.Collider other) (at Assets/MeusScript/PegaItem.cs:51)
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PegaItem : MonoBehaviour {
public GameObject particula;
public Color cor;
//int Life = GetComponent<Principal>().qtdLife;
GameObject objetoPrincipal;
// Use this for initialization
void Start () {
objetoPrincipal = GameObject.Find("GameEngine");//manda as informações para o objeto
}
//evento de colisão relativo ao objeto que será colidido
void OnTriggerEnter (Collider other) {
//se o objeto que colidir com o objeto que será descrito abaixo for player(no inspector do objeto personagem, deve ser mudado a tag para player)
if(other.gameObject.tag == "Player")
{
switch (this.gameObject.tag)
{
case "Municao": objetoPrincipal.SendMessage("PegaMunicao"); break;
case "Vida": objetoPrincipal.SendMessage("PegaVida"); break;
case "Colete": objetoPrincipal.SendMessage("PegaColete"); break;
case "Granada": objetoPrincipal.SendMessage("PegaGranada"); break;
case "PerdeVida": objetoPrincipal.SendMessage("PerdeVida"); break;
case "PerdeColete": objetoPrincipal.SendMessage("PerdeColete"); break;
case "Finish": objetoPrincipal.SendMessage("Morte"); break;
default: break;
}
if (particula != null)
{
//cria uma nova particula
GameObject minhaParticula = Instantiate(particula);
//coloca a particula na mesma posicao do item
minhaParticula.transform.position = this.transform.position;
//faz ele pegar a cor que foi colocada no item
minhaParticula.GetComponent<ParticleSystem>().startColor = cor;
//destroi o objeto
Destroy(this.gameObject);
}
}
}
}
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PegaItem : MonoBehaviour {
public GameObject particula;
public Color cor;
//int Life = GetComponent<Principal>().qtdLife;
GameObject objetoPrincipal;
// Use this for initialization
void Start () {
objetoPrincipal = GameObject.Find("GameEngine");//manda as informações para o objeto
}
//evento de colisão relativo ao objeto que será colidido
void OnTriggerEnter (Collider other) {
//se o objeto que colidir com o objeto que será descrito abaixo for player(no inspector do objeto personagem, deve ser mudado a tag para player)
if(other.gameObject.tag == "Player")
{
if (GetComponent<Principal>().qtdLife != 100)
{
switch (this.gameObject.tag)
{
case "Municao": objetoPrincipal.SendMessage("PegaMunicao"); break;
default: break;
}
if (particula != null)
{
//cria uma nova particula
GameObject minhaParticula = Instantiate(particula);
//coloca a particula na mesma posicao do item
minhaParticula.transform.position = this.transform.position;
//faz ele pegar a cor que foi colocada no item
minhaParticula.GetComponent<ParticleSystem>().startColor = cor;
//destroi o objeto
Destroy(this.gameObject);
}
}
}
}
}
PegaItem.OnTriggerEnter (UnityEngine.Collider other) (at Assets/MeusScript/PegaItem.cs:51)
rafaelholanda- Iniciante
- PONTOS : 2164
REPUTAÇÃO : 1
Idade : 28
Respeito as regras :
Re: Comunicação entre scripts
Esse script tem o mesmo nome?
- Código:
void Start () {
objetoPrincipal = GameObject.Find("GameEngine");//manda as informações para o objeto
//Coloque assim
objetoPrincipal = FindObjectOfType(typeof(GameEngine)) as GameEngine;
}
Tópicos semelhantes
» ajuda com os scripts fps entre outros
» Scripts !
» Multiplayer e comunicação
» scripts
» Dúvidas com Scripts
» Scripts !
» Multiplayer e comunicação
» scripts
» Dúvidas com Scripts
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos