[Résolu]Modifier fichier json dans dossier Ressource

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
kosted
Messages : 258
Inscription : 20 Avr 2015 18:21

[Résolu]Modifier fichier json dans dossier Ressource

Message par kosted » 25 Mars 2017 03:33

Bonjour à tous,
J'ai un fichier Json dans mon dossier Resources que je charge dans le code et je fais des traitements dessus. Le fichier Json contient une liste de quêtes (id, texte, isEnCour, realise).

Code : Tout sélectionner

[

  {
    "id": 1,
    "cleTexte": "game.quete1",
	"nbOrGagne" : 100,
	"isEncours": false,
	"realise" : false,
  },
  {
    "id": 2,
    "cleTexte": "game.quete2",
	"nbOrGagne" : 100,
	"isEncours": false,
	"realise" : false,
  }
]
J'aimerais arriver à modifier le fichier et par exemple pour l'objet d'id 1, mettre l'attribut

Code : Tout sélectionner

realise : true
et persister la modification, mais je ne sais pas comment faire. J'utilise la bibliothèque SimpleJson pour charger le fichier.

Quelqu'un aurait une idée ? Merci d'avance

kosted
Messages : 258
Inscription : 20 Avr 2015 18:21

Re: Modifier fichier json dans dossier Ressource

Message par kosted » 25 Mars 2017 16:50

J'ai fini par trouver une solution. Je supprime le fichier en entier et je le recrée avec les nouvelles données. Dans l'éditeur d'Unity, tout fonctionne bien. Par contre sous android, le fichier n'est pas créé. Quelqu'un sait d'où ça vient ?

Code : Tout sélectionner

private void majFichierJsonQuete()
    {
        string json = "[";

        //On parcout chaque objet json
        for (int i =0; i<listeQueteChargee.Count; i++)
        {
            if(i==0)
            {
                listeQueteChargee[i].realise = true;
                //on concatène pour avoir le forme [ {objet1}
                json += JsonUtility.ToJson(listeQueteChargee[i]);
            }else
            {
                listeQueteChargee[i].realise = true;
                //on rajoute la virgule
                json += ","+JsonUtility.ToJson(listeQueteChargee[i]);
            }
        }
        //On ferme le crochet
        json += "]";
       
        
        string path = null;
        path = "Assets/Resources/quetes.txt";
        #if UNITY_EDITOR

        #endif
        #if UNITY_STANDALONE
                         // You cannot add a subfolder, at least it does not work for me
                         path = "MyGame_Data/Resources/ItemInfo.json"
        #endif

        using (FileStream fs = new FileStream(path, FileMode.Create))
                {
                    using (StreamWriter writer = new StreamWriter(fs))
                    {
                        writer.Write(json);
                    }
                }
        #if UNITY_EDITOR
                UnityEditor.AssetDatabase.Refresh();
        #endif

        Debug.Log(json);
    }

Avatar de l’utilisateur
Max
Messages : 8763
Inscription : 30 Juil 2011 13:57
Contact :

Re: Modifier fichier json dans dossier Ressource

Message par Max » 25 Mars 2017 18:50

Quand c'est comme cela, pense à passer ton sujet en 'Résolu' ;)
(fait pour cette fois)
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Modifier fichier json dans dossier Ressource

Message par boubouk50 » 27 Mars 2017 10:13

kosted a écrit :Par contre sous android, le fichier n'est pas créé. Quelqu'un sait d'où ça vient ?
@Max: Est-ce vraiment résolu?
@Kosted: Est-ce un problème de droit d'écriture? Tu dois écrire dans persistentDataPath pour être sûr de les avoir.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

kosted
Messages : 258
Inscription : 20 Avr 2015 18:21

Re: Modifier fichier json dans dossier Ressource

Message par kosted » 27 Mars 2017 10:25

boubouk50 a écrit :
kosted a écrit :Par contre sous android, le fichier n'est pas créé. Quelqu'un sait d'où ça vient ?
@Max: Est-ce vraiment résolu?
@Kosted: Est-ce un problème de droit d'écriture? Tu dois écrire dans persistentDataPath pour être sûr de les avoir.
J'ai lu sur le forum de Unity que le dossier Ressource dans lequel mon fichier est, est détruit lors de la compilation, et que donc je ne peux pas utiliser Resources.Load. Du coup quand j'initialise l'application, je duplique le fichier vers un dossier spécifié et je travaille sur cette copie. Je vais testé persistentDataPath, ça doit être une solution plus propre.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Modifier fichier json dans dossier Ressource

Message par boubouk50 » 27 Mars 2017 10:46

kosted a écrit :J'ai lu sur le forum de Unity que le dossier Ressource dans lequel mon fichier est, est détruit lors de la compilation, et que donc je ne peux pas utiliser Resources.Load. Du coup quand j'initialise l'application, je duplique le fichier vers un dossier spécifié et je travaille sur cette copie. Je vais testé persistentDataPath, ça doit être une solution plus propre.
J'utilise Resources.Load () sans souci. Par contre, ce n'est pas possible de modifier les données. Il te faut donc, comme tu le fais, extérioriser les fichiers qui nécessitent des modifications. persistentDataPath est un endroit où cela est possible (Dossier Android/Data/xx.bundleName.xxx/ je crois), StreamingAssets lui ne possède que la lecture (me semble-t-il, dossier files dans persistentDataPath).
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

kosted
Messages : 258
Inscription : 20 Avr 2015 18:21

Re: [Résolu]Modifier fichier json dans dossier Ressource

Message par kosted » 27 Mars 2017 19:16

Oui, je l'ai mal exprimé. Quand je load le fichier, j'ai pas de problèmes. C'est la modification qui est impossible. Dans j'ai dupliqué le fichier. Merci

Répondre

Revenir vers « Scripting »