Accès aux fichiers textes avec Unity.

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
robo_info
Messages : 40
Inscription : 19 Juil 2011 11:50

Re: Accès aux fichiers textes avec Unity.

Message par robo_info » 16 Oct 2012 21:08

Salut, merci pour le tuto , j'ai utilisé le code qui me permet de lire le fichier ligne par ligne et j'ai mis le fichier.txt d'abord dans Asset ensuite dehors de Asset mais il m'affiche le même message d'erreur :

FileNotFoundException: Could not find file "E:\3INRV\openGL\LireFichierAcq\fichier.txt".
System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options)
System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share)
(wrapper remoting-invoke-with-check) System.IO.FileStream:.ctor (string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare)
System.IO.File.OpenRead (System.String path)
System.IO.StreamReader..ctor (System.String path, System.Text.Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize)
System.IO.StreamReader..ctor (System.String path)
(wrapper remoting-invoke-with-check) System.IO.StreamReader:.ctor (string)
LectureFichier.Start () (at Assets/LectureFichier.cs:11)


vous pouvez m'aider SVP.Merci

Avatar de l’utilisateur
axel
Messages : 1924
Inscription : 26 Avr 2012 09:10
Localisation : Lille - Dunkerque
Contact :

Re: Accès aux fichiers textes avec Unity.

Message par axel » 17 Oct 2012 07:39

Merci ZJP :D

Winuty
Messages : 21
Inscription : 18 Oct 2023 00:58

Re: Accès aux fichiers textes avec Unity.

Message par Winuty » 30 Avr 2024 17:15

Bonjour à tous.

J'ai créé des nodes de Visual Scripting pour un projet un peut particulier.
Qui sauvegarde mes variables dans Application.persistentDataPath.

Voilà j'aimerais écrire ou lire une ligne prédéfinie dans les fichiers texte.

Pour lire le fichier txt je me sert de: File.ReadAllText
Et pour écrire dans le fichier txt je me sert de: File.WriteAllText

Mais pour le moment j'ai qu'une écriture/lecture pour une variable par fichier txt.
J'aimerais regroupé toutes les variables qui concernent mon GameObject dans le même fichier texte.
Et de pouvoir écrire ou lire à une ligne bien définie (genre ligne 5 etc).

Après je gère je vais mettre le nom de ma variable devant et quand je la récupère je split la ligne pour récupérer que la variable (sans sont nom).

Donc je voulais savoir s'il était possible de définir le numéro d'une ligne ?

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

Re: Accès aux fichiers textes avec Unity.

Message par boubouk50 » 30 Avr 2024 17:25

Il me semble que tu as la fonction ReadAllLines () qui te renvoie un tableau de string (une par ligne).
Ainsi, tu peux modifier la ligne que tu veux et la réécrire avec WriteAllLines ().

Sinon pour les jeux de données pures, tu peux regarder du côté du format json. C'est fait pour.
"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

Winuty
Messages : 21
Inscription : 18 Oct 2023 00:58

Re: Accès aux fichiers textes avec Unity.

Message par Winuty » 30 Avr 2024 17:54

Ha merci pour cette réponse aussi rapide sa fait plaisir un forum actif. ::d

Du coup, pour choisir une ligne en particulier dans ce tableau je doit mettre un paramètre ?

Pour le format Json c'est le même principe que pour le fichier texte non ?
L'idée est d'exporter les variables d'Unity vers des fichiers textes qui sont classés dans des dossiers.
Dernière édition par Winuty le 05 Mai 2024 19:21, édité 1 fois.

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

Re: Accès aux fichiers textes avec Unity.

Message par boubouk50 » 30 Avr 2024 18:09

Pour le visual scripting, je ne te serai d'aucune aide.
L'avantage du json, c'est que tu peux typer tes variables (int, bool, float, string) directement. C'est un format particulier lisible par beaucoup de langage. Mais je ne sais pas si tu peux le faire en visual scripting.
De ce que je comprends, tu as un fichier par donnée et tu dois remplir chaque "boite" à la main. C'est long.
Il faudrait pouvoir tout centraliser.

Je suis réactif là de suite, mais je me reconnecterai pas avant Jeudi par contre. Bon dev.
"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

Winuty
Messages : 21
Inscription : 18 Oct 2023 00:58

Re: Accès aux fichiers textes avec Unity.

Message par Winuty » 30 Avr 2024 18:40

Ok à jeudi, merci pour tes réponses ::d

Selon mon code je relis les points pour que les nodes récupèrent la variable via les autres nodes.
La zone de saisie (sur les nodes) que tu vois, c'est uniquement si je veux appeller directement un dossier en particulier.
De base j'avais la petite node typer de relier à ces nodes, mais pour éviter de surcharger le VS j'ai rajouter la possibilité de l'inscrire directement sur la node. Je peux choisir soit l'un ou soit l'autre pour récupérer ma variable.

Bon mon projet c'est de developper un moteur de jeu (par le biai d'Unity) compatible toute plateforme et utilisable sur smartphone. Je veux dire par la un moteur de jeu (comme Unity), pas simplement faire tourner un jeu sur mobile.

J'ai commencé à développer une interface optimisée pour qu'elle soit utilisable sur mon Samsung ZFold, une tablette ou tous autres smartphone à grand écran et les PC biensur.
J'ai aussi étudié une version d'interface adapter aux autres smartphones.

En gros l'idée c'est de pouvoir developper mes jeux directement via smartphone et du coup n'importe quand, sans à avoir besoin d'un pc à chaque fois.

Tous les GameObjects, les autres élément, paramètres, textures, audio etc de mon jeu sont enregistrer et charger via ces variables qui sauvegarder dans les fichiers textes.

Je peux ainsi récupèrer facilement les dossiers pour les chargers sur une autre platforme.

Mon moteur est entièrement coder en Visual Scripting. Si besoin je peux créer mes propres node pour rajouter des fonctions qu'Unity ne propose pas par defaul.
Dernière édition par Winuty le 05 Mai 2024 19:20, édité 1 fois.

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

Re: Accès aux fichiers textes avec Unity.

Message par boubouk50 » 02 Mai 2024 08:45

Quel projet !
Perso, si je devais bosser sur smartphone (quelle idée tout de même), j'installerai un logiciel d'accès à distance comme Teamviewer pour me connecter sur mon PC. Cependant, je conçois que l'interface ne serait pas optimale et que cela nécessiterait d'utiliser de la data.

Comme dit, la fonction renvoie un tableau de string, dont chaque élément contient une ligne. Ainsi, l'index vaut comme numéro de ligne-1, puisque tableau[0] = ligne 1.
https://learn.microsoft.com/en-us/dotne ... mework-4.7
Donc, si tu concatènes tout dans le même fichier, alors chaque get/set devra avoir un index unique.

Bon dev.
"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

Winuty
Messages : 21
Inscription : 18 Oct 2023 00:58

Re: Accès aux fichiers textes avec Unity.

Message par Winuty » 02 Mai 2024 10:57

Merci pour tes réponses, je vais faire un test :-D
Pour le décalage de 1 dans l'index j'ai l'habitude, je fais beaucoup de recherche d'index pour sélectionner des childs.

Donc si j'ai bien compris la comme ça j'écris Test à la 4 ème ligne ?

Code : Tout sélectionner

  string[5] createText = { "Test" };
            File.WriteAllLines(path, createText);
Pour mon projet oui j'avais d'abord pensé à TeamViewer pour travailler n'importe quand sur mes projets, mais l'interface est trop surchargée.
Déjà que sur PC avec ma résolution 5120x1440 j'ai pas assez de place pour travailler sur Unity de façon vraiment optimisés.

L'idée était surtout de développer un moteur qui permet de tout faire:
- Un moteur de jeu 2D/3D
- De la modélisation tridimensionnelle (comme Blender, Maya, 3DS Max, ZBrush, Houdini etc)
- D'intégrer directement toutes les prefabs primitif, audio, annimation etc pour les instanciers.
- L'édition de C# ou voir recréer une interface de Visual Scripting.

Le projet reste vide et l'App super legère (~30 mo).
Tout ton jeu est chargé directement via les variables (dans les fichiers texte) pour être instancier.
Peut importe la platforme; Android, iOS, Windows, Mac, Linux, tu as une application légère qui peut charger n'importe quel projet (qui sont contenus uniquement dans ces fichiers texte) sans augmenter la taille de l'application.

Actuellement mon moteur est quasi au niveau de Core Design (les premiers Tomb Raider).
Je peux level builder mon jeu en damier tridimensionnel.
Par la suite je vais intégrer la modification de terrain (comme WOW par exemple).
J'ai aussi prévu des kits pour les jeux en 2D, stratégie (en perspective), combat, course etc.

Gros projet c'est vrai, mais pas impossible. J'ai déjà bien avancé en si peu de temps.
J'ai d'ailleurs choisi le Visual Scripting pour aller beaucoup plus vite. Je veux me faciliter au maximum la tâche pour l'utilisation de mon moteur. Pour le moment j'ai aucun code à taper, c'est uniquement des paramètres à activer/désactiver ou saisir pour modifier mes GameObjects.

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

Re: Accès aux fichiers textes avec Unity.

Message par boubouk50 » 02 Mai 2024 11:29

SI tu fais ça, tu auras un problème, tu risques de n'écrire QUE la ligne.
Il te faut lire le fichier texte, modifier la ligne que tu veux et réécrire.
L'idée est que tu le lises dès le lancement de l'application et que tu gardes ton tableau de string accessible.
Comme ça, dès que tu veux sauvegarder tes données, ça écrit tout dans le fichier texte. Et donc, pas besoin d'un appel par variable, un seul appel global s'occupe de tout sauvegarder.
"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

Répondre

Revenir vers « Scripting »