Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

282
Visualizações
¿Cómo guardo las monedas que mi personaje ha recolectado de una escena a otra? (Unidad)

Estoy tratando de crear una tienda en otra escena. Puedes acceder a él en cualquier momento mientras juegas presionando H. Mi problema es que las monedas que el jugador ha recolectado no se guardan. He estado tratando de buscar respuestas, pero nada parece ayudar.

Los Códigos: Mi Código Global que uso para guardar variables:

 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Global : MonoBehaviour { public static Global Instance; public int sumCoins; void Awake(){ if (Instance == null){ DontDestroyOnLoad(gameObject); Instance = this; } else if (Instance != this){ Destroy(gameObject); } } }

El código que uso para comprar artículos:

 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Shop : MonoBehaviour { public Button milk; void Start() { Debug.Log("you have " + Global.Instance.sumCoins); milk.onClick.AddListener(AddMilk); } void AddMilk(){ Debug.Log("You bought milk"); //if player has more than 5 coins. //add milk //else if player has less than 5 coins //display "You cant buy this" //else if player doesnt have a slot available //display "You cant buy this" } }

El código que se usa para contar y sumar monedas:

 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Coinsystem : MonoBehaviour { public int sumCoins = 0; private int addedCoins; int coins; Text txt; public GameObject count; public void Start(){ Debug.Log("coin system working"); txt = count.GetComponent<Text>(); txt.text = "" + sumCoins; sumCoins = Global.Instance.sumCoins; } public void Update(){ txt.text = "" + sumCoins; } public void AddCoins(int addedCoins){ sumCoins += addedCoins; Debug.Log("Coins Added!"); } public void SaveMoney(){ Global.Instance.sumCoins = sumCoins; } }

¡Gracias por tomarte tu tiempo para leer esto!

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Una forma rápida de resolver este problema sería usar una clase estática. A veces he usado este método para conservar los datos a lo largo de la vida útil de la aplicación.

 public static class GameData { private static int coins = 0; public static void SetCoins(int coinsIn) { coins = coinsIn; } public static void AddCoins(int coinsIn) { coins += coinsIn; } public static int GetCoins() { return coins; } }

Entonces puedes simplemente llamar a los métodos de esta manera:

 GameData.SetCoins(...); GameData.AddCoins(...); var coins = GameData.GetCoins();

La otra forma en que las personas resuelven este problema es la siguiente:

  • Guardar/Cargar hacia y desde el almacenamiento local (Esto se puede usar junto con la clase anterior o solo).
  • PlayerPrefs , similar al uso de una clase estática. Descubra más sobre eso aquí .
  • Crear un objeto con un script adjunto que usa DontDestroyOnLoad . Descubra más sobre eso aquí .

Normalmente no recomendaría el uso de clases estáticas porque generalmente es una mala práctica de programación, pero a veces es necesario sortear limitaciones como esta.

Generalmente, como regla general, si va a utilizar una clase estática, suele haber una mejor manera de hacerlo.

Probablemente diría que la forma más preferida sería Guardar/Cargar los datos hacia y desde el almacenamiento local cuando sea necesario, pero este enfoque es demasiado para lo que desea hacer.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda