[RESOLVIDO] salvar as configurações para aparecer no game certo que o jogador configurou
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] salvar as configurações para aparecer no game certo que o jogador configurou
Boa tarde, estou tentando fazer um código para salvar as configurações de jogo e ficarem salvas e depois se o jogador quiser alterar as configurações novamente salva de novo as alterações e mostra tudo que foi modificado certinho no jogo, tem um script aqui que foi feito para fazer essa função e o outro tá puxando para quando precisa puxar, com teste que foi feito está quase funcionando o script ele salva a primeira vez mas depois que tento salvar de novo não funciona. Como posso resolver isso??
Script de salvar(GameManager)
Script que está chamando para salvar cada configuração, um global de desativa botao e liga botao tb;
Script de salvar(GameManager)
- Código:
[size=14]using UnityEngine;
using System.Collections;
using System.IO;
public class GameManager : MonoBehaviour
{
// Private variables
private static GameManager _instance;
private string _dataPath;
// Public variables
public static GameManager Instance { get { return _instance; } }
public Settings Settings = new Settings();
// Unity methods
private void Awake()
{
SetPath();
Settings = LoadSettings();
SetInstance();
}
private void Update ()
{
if(Input.GetKeyDown (KeyCode.S))
SaveSettings();
if (Input.GetKeyDown (KeyCode.L))
Settings = LoadSettings();
}
// Private class methods
private void SetInstance()
{
if (_instance != null)
Destroy(gameObject);
else
{
_instance = this;
DontDestroyOnLoad(_instance);
}
}
private void SetPath() {
// _dataPath = Path.Combine(Application.persistentDataPath, "GameSettings.txt");
_dataPath = Path.Combine(Application.persistentDataPath, "GameSettings1.txt");
}
private void SaveSettings ()
{
string jsonString = JsonUtility.ToJson (Settings);
Debug.Log(JsonUtility.ToJson (Settings.GameAudio));
using (StreamWriter streamWriter = File.CreateText (_dataPath))
{
streamWriter.Write (jsonString);
}
}
private Settings LoadSettings ()
{
try {
using (StreamReader streamReader = File.OpenText (_dataPath))
{
string jsonString = streamReader.ReadToEnd ();
Debug.Log(jsonString);
return JsonUtility.FromJson<Settings> (jsonString);
}
} catch {
Debug.Log("CATCH");
return GetDefaultSettings();
}
}
private Settings GetDefaultSettings() {
Settings settings = new Settings();
// Set default player
settings.Player = GetDefaultPlayer();
// Set default audio
settings.GameAudio = GetDefaultGameAudio();
// Set default scenario objects
settings.ScenarioObjects = GetDefaultScenarioObjects();
// Set default other settings
settings.HasAppleWatch = false;
return settings;
}
private Player GetDefaultPlayer() {
Player player = new Player();
player.Ethnicity = Ethnicity.Brown;
player.Gender = Gender.Female;
return player;
}
private GameAudio GetDefaultGameAudio() {
GameAudio gameAudio = new GameAudio();
gameAudio.Dialog = true;
// gameAudio.Effects = true;
gameAudio.Effects = true;
gameAudio.Soundtrack = true;
return gameAudio;
}
private ScenarioObjects GetDefaultScenarioObjects() {
ScenarioObjects scenarioObjects = new ScenarioObjects();
scenarioObjects.ShowAnimations = true;
scenarioObjects.ShowFluAlert = true;
scenarioObjects.SimpleBackground = false;
return scenarioObjects;
}
// Public class methods
public void SetPlayerEthinicity(Ethnicity ethnicity) {
Settings.Player.Ethnicity = ethnicity;
SaveSettings();
}
public void SetPlayerGender(Gender gender) {
Settings.Player.Gender = gender;
SaveSettings();
}
public void SetActiveDialog(bool setActiveDialog) {
Settings.GameAudio.Dialog = setActiveDialog;
SaveSettings();
}
public void SetActiveAudioEffects(bool setActiveEffects) {
Settings.GameAudio.Effects = setActiveEffects;
SaveSettings();
LoadSettings();
}
public void SetActiveSoundtrack(bool setActiveSoundtrack) {
Settings.GameAudio.Soundtrack = setActiveSoundtrack;
SaveSettings();
}
public void SetActiveAnimations(bool setActiveAnimations) {
Settings.ScenarioObjects.ShowAnimations = setActiveAnimations;
SaveSettings();
}
public void SetActiveFluAlert(bool setActiveFluAlert) {
Settings.ScenarioObjects.ShowFluAlert = setActiveFluAlert;
SaveSettings();
}
public void SetActiveSimpleBackground(bool setActiveSimpleBackground) {
Settings.ScenarioObjects.SimpleBackground = setActiveSimpleBackground;
SaveSettings();
}
public void SetActiveAppleWatch(bool setActiveAppleWatch) {
Settings.HasAppleWatch = setActiveAppleWatch;
SaveSettings();
}
}[/size]
Script que está chamando para salvar cada configuração, um global de desativa botao e liga botao tb;
- Código:
[size=14]using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public enum SettingsSteps{
FluAlert,
AppleWatch,
Animations,
Dialogs,
Effects,
SoundTracks,
SimpleBG
}
public class LigaDesliga : MonoBehaviour
{
public SettingsSteps SettingsStep;
public GameObject[] Liga;
public GameObject[] Desliga;
void Inicilization(){
switch (SettingsStep)
{
case SettingsSteps.FluAlert:
if(GameManager.Instance.Settings.ScenarioObjects.ShowFluAlert == true){
LigaBotao();
}
else{
DesligaBotao();
}
break;
case SettingsSteps.AppleWatch:
break;
case SettingsSteps.Animations:
break;
case SettingsSteps.Dialogs:
if(GameManager.Instance.Settings.GameAudio.Dialog == true){
LigaBotao();
}
else{
DesligaBotao();
}
break;
case SettingsSteps.Effects:
Debug.Log("fora tudo");
if(GameManager.Instance.Settings.GameAudio.Effects == true){
LigaBotao();
Debug.Log("dentro IF");
}
else{
DesligaBotao();
Debug.Log("else");
}
break;
case SettingsSteps.SoundTracks:
if(GameManager.Instance.Settings.GameAudio.Soundtrack == true){
LigaBotao();
}
else{
DesligaBotao();
}
break;
case SettingsSteps.SimpleBG:
break;
}
}
void Start()
{
Inicilization();
}
// Criar um ENUM com os passos LIGA/DESLIGA, criar um metodo inicialização, switch pelo enum criado, consultar o gamemanager baseado no enum, chamando assim o metodo necessario para cada config especifica.
// Update is called once per frame
void Update()
{
}
public void LigaBotao(){
for(int i = 0; i < Liga.Length; i++)
{
Liga[i].SetActive(true);
}
for(int a = 0; a < Desliga.Length; a++)
{
Desliga[a].SetActive(false);
}
}
public void DesligaBotao(){
for(int i = 0; i < Liga.Length; i++)
{
Liga[i].SetActive(false);
}
for(int a = 0; a < Desliga.Length; a++)
{
Desliga[a].SetActive(true);
}
}
}
[/size]
lucaspoiob- Membro
- PONTOS : 2854
REPUTAÇÃO : 0
Respeito as regras :
Re: [RESOLVIDO] salvar as configurações para aparecer no game certo que o jogador configurou
Ele está debugando aqulo que está dentro da função de salvar pelo menos? Se sim, da dando ruim nos json... Do contrário, o código não está conseguindo chamar as funções novamente
Re: [RESOLVIDO] salvar as configurações para aparecer no game certo que o jogador configurou
Opaaa, eu consegui resolver o problema já mano, valeuMarcosSchultz escreveu:Ele está debugando aqulo que está dentro da função de salvar pelo menos? Se sim, da dando ruim nos json... Do contrário, o código não está conseguindo chamar as funções novamente
lucaspoiob- Membro
- PONTOS : 2854
REPUTAÇÃO : 0
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] Script para cubo aparecer
» [RESOLVIDO] Como saber se o jogador esta vendo um certo objeto?
» [RESOLVIDO] Problemas para salvar imagem de textura gerada na Unity no PC
» Como fasso para criar load game para salvar o meu progresso
» [RESOLVIDO] Colocar o código certo para abrir porta
» [RESOLVIDO] Como saber se o jogador esta vendo um certo objeto?
» [RESOLVIDO] Problemas para salvar imagem de textura gerada na Unity no PC
» Como fasso para criar load game para salvar o meu progresso
» [RESOLVIDO] Colocar o código certo para abrir porta
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos