[TUTORIAL] Passar Valores entre cenas
4 participantes
Página 1 de 1
[TUTORIAL] Passar Valores entre cenas
Bom amigos eu encontrei um jeitinho simples de passar informaçoes entre Scenas Crie um Script com esse nome PassarValor ele nao precisa ficar em nenhum objeto ele vai ficar livre aqui o script
Aqui vou colocar um script meu para voces verem como eu fiz
Outros valores que nao coloquei e so repetir o mesmo prosdimento Blz
Abraços a todos e boa noite
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PassarValor : MonoBehaviour {
public static float UltimoLevel; // Um valor de level se caso tiver em seu jogo
public static float UltimoDinheiro; // Um valor de dinheiro se caso tiver em seu jogo
public static float UltimaScore; // Um valor de Score se caso tiver em seu jogo
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
}
Aqui vou colocar um script meu para voces verem como eu fiz
- Código:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public enum CharacterType{
Guerreiro = 0,
Mago = 1,
Arqueiro = 2,
Alienigena = 3,
Robor = 4
}
public class PlayerStats: MonoBehaviour {
public CharacterType characterType;
public static int Level = 1;
public static int nextLevel;
public static int xp;
public static int xpToLevel;
public static int xpDiff;
private Animator anim;
public string GameOver;
public int LevelAtual;
//Lugar magico da margia ganhando level
public Transform Lugarmagico;
public ParticleSystem GanhouLevel;
public AudioClip SomGanhouLevel;
//Status
public static int Life;
public static int totalLife = 40;
public static int Magic;
public static int totalMagic = 20;
public static int Attack;
public static int Defense;
public static float speed;
//Morte
bool chamouMorte = false;
public MonoBehaviour[] scriptsToDisable;
public float morteTime = 20;
private int atualAttack;
private int atualDefense;
private bool blinkActive;
public float blinkTime;
private float blinkCouter;
public SkinnedMeshRenderer playerRenderer;
public static float gold;
void Start () {
if(PassarValor.UltimoLevel !=0)//Aqui informo se ele e diferente ou igual a 0
{
Level = PassarValor.UltimoLevel; //Aqui busco o valor que esta lar no script PassarValor
}
else
{
Level = level;// ou ele vale ele mesmo
}
Recalculation();
atualAttack = Attack;
atualDefense = Defense;
anim = GetComponent<Animator> ();
}
// Update is called once per frame
void Update () {
PassarValor.UltimoLevel = Level; // Aqui eu indico que ele e igual ao level
LevelAtual = Level;
nextLevel = Level + 1;
xpToLevel = 50* nextLevel * Level;
if(xp >= xpToLevel){
xpDiff = xp - xpToLevel;
LevelUP();
}
if (Input.GetKeyDown(KeyCode.I)){
AddXp (12);
Debug.Log("Ganhou xp");
}
if (Life <= 0) {
Life = 0;
Cursor.visible = true;
if (chamouMorte == false) {
chamouMorte = true;
anim.SetBool("isMorte",true);
Morrer();
}
}
}
public void Recalculation(){
totalLife = 40 * Level;
totalMagic = 20 * Level;
Attack = 5 * Level;
Defense = 3 * Level;
Life = totalLife;
Magic = totalMagic;
}
public static void AddXp(int newXp){
xp += newXp;
}
public void LevelUP(){
Level ++;
xp = 0 + xpDiff;
Recalculation();
GanhandoLevel();
}
public void Morrer(){
if (scriptsToDisable.Length == 0) {
Debug.Log ("All scripts still Die");
return;
}
foreach ( MonoBehaviour script in scriptsToDisable)
script.enabled = false;
morteTime -= Time.deltaTime;
Application.LoadLevel (GameOver);
}
public void DamageReceived(int damage){
Life -= damage;
blinkActive = true;
blinkCouter = blinkTime;
}
public void GanhandoLevel(){
Instantiate (GanhouLevel, transform.position, transform.rotation);
GetComponent<AudioSource> ().PlayOneShot (SomGanhouLevel);
}
public static void AddGold(int Agold){
gold += Agold;
}
public void ActiveBlinc(){
if(blinkActive){
if(blinkCouter > blinkTime * 0.66f){
playerRenderer.enabled = false;
}
else if (blinkCouter > blinkTime * 0.33f){
playerRenderer.enabled = true;
}else if (blinkCouter > 0){
playerRenderer.enabled = false;
}else{
playerRenderer.enabled = true;
blinkActive = false;
}
blinkCouter -= Time.deltaTime;
}
}
}
Outros valores que nao coloquei e so repetir o mesmo prosdimento Blz
Abraços a todos e boa noite
Última edição por MarcosSchultz em Sex Abr 28, 2017 12:56 pm, editado 2 vez(es) (Motivo da edição : Alterado ícone do assunto)
Re: [TUTORIAL] Passar Valores entre cenas
Manin to no celular, Mas vou tentar me expressar por aq vamos ver .
Eu tenho o script da vida já pronto no meu personagem q no caso seria na variável vidaatual , do script vida , ou seja Vida.VidaAtual
Aí pra salvar essa variável no seu script e dps buscar ela como faria ? Tou com um problema no roteador mas assim q arrumar posto o script aq
Eu tenho o script da vida já pronto no meu personagem q no caso seria na variável vidaatual , do script vida , ou seja Vida.VidaAtual
Aí pra salvar essa variável no seu script e dps buscar ela como faria ? Tou com um problema no roteador mas assim q arrumar posto o script aq
bravoent- Avançado
- PONTOS : 2918
REPUTAÇÃO : 16
Respeito as regras :
Re: [TUTORIAL] Passar Valores entre cenas
Voce pode fazer assim
O script do jogador pode ser assim
Ao passar de Scena vove perdendo vida ele continua com a vida que voce perdeu
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PassarValor : MonoBehaviour {
public static float UltimaVida; // Um valor de vida se caso tiver em seu jogo
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
}
O script do jogador pode ser assim
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class VidadoPlayer : MonoBehaviour {
public static float Vida; // Um valor da vida
// Use this for initialization
void Start () {
if(PassarValor.UltimaVida !=0)//Aqui informo se ele e diferente ou igual a 0
{
Vida = PassarValor.UltimaVida; //Aqui busco o valor que esta lar no script PassarValor
}
else
{
Vida = Vida;// ou ele vale ele mesmo
}
}
// Update is called once per frame
void Update () {
PassarValor.UltimaVida = Vida;//aqi ele torna o mesmo valor da sua vida ao outro script
}
}
Ao passar de Scena vove perdendo vida ele continua com a vida que voce perdeu
Re: [TUTORIAL] Passar Valores entre cenas
Muito bom cara! Parabéns! vai ajudar muita gente!Callyde Jr escreveu:Bom amigos eu encontrei um jeitinho simples de passar informaçoes entre Scenas Crie um Script com esse nome PassarValor ele nao precisa ficar em nenhum objeto ele vai ficar livre aqui o script
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PassarValor : MonoBehaviour {
public static float UltimoLevel; // Um valor de level se caso tiver em seu jogo
public static float UltimoDinheiro; // Um valor de dinheiro se caso tiver em seu jogo
public static float UltimaScore; // Um valor de Score se caso tiver em seu jogo
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
}
Aqui vou colocar um script meu para voces verem como eu fizPronto e so usar um Box collide para mudar de Scena de uma para outrar
- Código:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public enum CharacterType{
Guerreiro = 0,
Mago = 1,
Arqueiro = 2,
Alienigena = 3,
Robor = 4
}
public class PlayerStats: MonoBehaviour {
public CharacterType characterType;
public static int Level = 1;
public static int nextLevel;
public static int xp;
public static int xpToLevel;
public static int xpDiff;
private Animator anim;
public string GameOver;
public int LevelAtual;
//Lugar magico da margia ganhando level
public Transform Lugarmagico;
public ParticleSystem GanhouLevel;
public AudioClip SomGanhouLevel;
//Status
public static int Life;
public static int totalLife = 40;
public static int Magic;
public static int totalMagic = 20;
public static int Attack;
public static int Defense;
public static float speed;
//Morte
bool chamouMorte = false;
public MonoBehaviour[] scriptsToDisable;
public float morteTime = 20;
private int atualAttack;
private int atualDefense;
private bool blinkActive;
public float blinkTime;
private float blinkCouter;
public SkinnedMeshRenderer playerRenderer;
public static float gold;
void Start () {
if(PassarValor.UltimoLevel !=0)//Aqui informo se ele e diferente ou igual a 0
{
Level = PassarValor.UltimoLevel; //Aqui busco o valor que esta lar no script PassarValor
}
else
{
Level = level;// ou ele vale ele mesmo
}
Recalculation();
atualAttack = Attack;
atualDefense = Defense;
anim = GetComponent<Animator> ();
}
// Update is called once per frame
void Update () {
PassarValor.UltimoLevel = Level; // Aqui eu indico que ele e igual ao level
LevelAtual = Level;
nextLevel = Level + 1;
xpToLevel = 50* nextLevel * Level;
if(xp >= xpToLevel){
xpDiff = xp - xpToLevel;
LevelUP();
}
if (Input.GetKeyDown(KeyCode.I)){
AddXp (12);
Debug.Log("Ganhou xp");
}
if (Life <= 0) {
Life = 0;
Cursor.visible = true;
if (chamouMorte == false) {
chamouMorte = true;
anim.SetBool("isMorte",true);
Morrer();
}
}
}
public void Recalculation(){
totalLife = 40 * Level;
totalMagic = 20 * Level;
Attack = 5 * Level;
Defense = 3 * Level;
Life = totalLife;
Magic = totalMagic;
}
public static void AddXp(int newXp){
xp += newXp;
}
public void LevelUP(){
Level ++;
xp = 0 + xpDiff;
Recalculation();
GanhandoLevel();
}
public void Morrer(){
if (scriptsToDisable.Length == 0) {
Debug.Log ("All scripts still Die");
return;
}
foreach ( MonoBehaviour script in scriptsToDisable)
script.enabled = false;
morteTime -= Time.deltaTime;
Application.LoadLevel (GameOver);
}
public void DamageReceived(int damage){
Life -= damage;
blinkActive = true;
blinkCouter = blinkTime;
}
public void GanhandoLevel(){
Instantiate (GanhouLevel, transform.position, transform.rotation);
GetComponent<AudioSource> ().PlayOneShot (SomGanhouLevel);
}
public static void AddGold(int Agold){
gold += Agold;
}
public void ActiveBlinc(){
if(blinkActive){
if(blinkCouter > blinkTime * 0.66f){
playerRenderer.enabled = false;
}
else if (blinkCouter > blinkTime * 0.33f){
playerRenderer.enabled = true;
}else if (blinkCouter > 0){
playerRenderer.enabled = false;
}else{
playerRenderer.enabled = true;
blinkActive = false;
}
blinkCouter -= Time.deltaTime;
}
}
}
Outros valores que nao coloquei e so repetir o mesmo prosdimento Blz
Abraços a todos e boa noite
Re: [TUTORIAL] Passar Valores entre cenas
Irmão como eu conseguiria salvar o valor da minha variável vida q já tá em um escript vida q está dentro do meu player , nessa variável última vida do script passa valor ?
E dps da load néla ?
Tem como fazer ela salvar automático os valores em vez de ter q fica salvando manualmente
E dps da load néla ?
Tem como fazer ela salvar automático os valores em vez de ter q fica salvando manualmente
bravoent- Avançado
- PONTOS : 2918
REPUTAÇÃO : 16
Respeito as regras :
Re: [TUTORIAL] Passar Valores entre cenas
Esse sistema serve para levar dados para todas as Scenas em tempo de jogo ja para salvar e desse jeito que voce falou esse video mostra como fazer
Re: [TUTORIAL] Passar Valores entre cenas
Aqui Topico criei um script dessa maneira que voce esta falando amigo
Re: [TUTORIAL] Passar Valores entre cenas
Obrigado dstaroski eu estava precisando de um sisteminha desse kkkk
Apredir e estou mostrando como fazer-lo
Apredir e estou mostrando como fazer-lo
Re: [TUTORIAL] Passar Valores entre cenas
Esse método de passar as variáveis ainda funciona?
Tiagotes- Iniciante
- PONTOS : 1626
REPUTAÇÃO : 0
Idade : 23
Áreas de atuação : Programação em Unity
>>>Nível<<<
Iniciante - X
Intermédio -
Avançado -
Respeito as regras :
Tópicos semelhantes
» [TUTORIAL]Passar de cena ao colidir em objeto ou ao passar certo tempo
» Delay entre CENAS
» SAVE E LOAD ENTRE CENAS
» Transição de Cores Entre Cenas!
» carregamento de dados entre cenas
» Delay entre CENAS
» SAVE E LOAD ENTRE CENAS
» Transição de Cores Entre Cenas!
» carregamento de dados entre cenas
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos