es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Estoy tratando de guardar el valor bool para el objeto seleccionado en un archivo JSON.

Lo que estoy intentando hacer es tener una interfaz de usuario para elegir un regalo, donde al hacer clic en un regalo (que es un botón que ejecuta una función para seleccionar ese regalo y luego intenta guardarlo en un archivo JSON, “Serialization”). Me está lanzando un error:

IndexOutOfRangeException: El índice estaba fuera de los límites del array.
El código para serializar es:

public void UnlockRewardedGift()
{
StartCoroutine(AudioManager.instance.Play(“SmallButton”));
Ads_Manager.Instance.isGiftUnlocked = true;
Ads_Manager.Instance.ShowUnityRewardedVideoAd();
UserData data = new UserData();
string json = JsonConvert.SerializeObject(ShopManager.Instance._GiftNumber, Formatting.Indented);
var path = Path.Combine(Application.persistentDataPath, “saveData.json”);
File.WriteAllText(path, json);

    PlayerPrefs.SetInt("Gift" + ShopManager.Instance.unlockedGift + "Bought", 1);
    ShopManager.Instance.isRewarded = false;
    ShopManager.Instance.GiftStatusFetcher();
    CloseRewardPanel();

}

Esta es la clase UserData donde se produce el error en la línea (_GiftNumber[i] = true;):

using System;
using System.Collections.Generic;
using MyCode;
using Newtonsoft.Json;
[Serializable]
public class UserData
{
//public int _LastSelected { get; set; }

public bool[] _GiftNumber { get; set; }

public  UserData()
{
    _GiftNumber = new bool[16];
    for(int i =0; i<=_GiftNumber.Length; i++)
    {
        _GiftNumber[i] = true;
    }
}

}

Una vez que se ha establecido un índice específico como verdadero, debe cargarse en el objeto de matriz bool del administrador de tienda llamado _GiftNumber[]:

string fileName = “saveData.json”;
var path = Path.Combine(Application.persistentDataPath, fileName);
if(File.Exists(path))
{
string jsonText = File.ReadAllText(fileName);
var data = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonText);

    }

Cuando abro la escena de inicio que contiene el script de ShopManager (el que estoy intentando establecer como verdadero el bool), estoy deserializando el Json en el método de inicio de este script y este es el error que se lanza cuando abro esta escena:

`
FileNotFoundException: No se pudo encontrar el archivo “D: \ Spartans
Global \ Projects \ Current Project \ Pinpull-V5 \ saveData.json”

¡Gracias de antemano! He estado atascado con esto durante un tiempo y realmente agradecería algo de ayuda. Soy un novato que intentó algunas cosas pero parece que no puedo resolverlo, por eso me dirijo a esta increíble comunidad. Saludos.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Basado en la información proporcionada, parece que el error se produce al intentar deserializar el archivo JSON. Es probable que el archivo no se encuentre en la ubicación especificada. Para resolver este problema, debes verificar la ruta del archivo y asegurarte de que sea correcta. Además, debes asegurarte de que el archivo existe en la ubicación especificada. Si el archivo no existe, debes crearlo y luego intentar deserializarlo nuevamente.

Comments are closed.