Comment lire les données d'un fichier texte dans l'unité


14

Quelqu'un peut-il m'aider à donner les étapes nécessaires pour lire les données du fichier texte dans l'unité et comment ajouter le script.


youtube.com/watch?v=6c1fTHkYzTQ C'est pour lire le texte en c #… qui vous aidera :)
Savlon

Le fichier texte est-il un actif (faisant partie de votre projet Unity) ou situé sur le système de fichiers?
Kelly Thomas

son situé sur le système de fichiers. J'ai placé mon fichier dans le lecteur E et utilisé le code suivant `import System.IO; var filename = "data.txt"; fonction Start () {var sourse = new StreamReader (Application.dataPath + "/" + filename); var fileContents = sourse.ReadToEnd (); sourse.Close (); var lines = fileContents.Split ("\ n" [0]); for (ligne en lignes) {print (ligne); }} `
user1509674

VTC comme non spécifique au jeu. IO est une programmation générique, cela devrait être sur Stack Overflow, pas sur GameDev.
Gnemlock

La réponse acceptée n'est pas spécifique à Unity, mais la réponse la plus votée (qui aurait dû être acceptée) est spécifique à Unity.
jhocking

Réponses:


8

Version C #.

using System.IO;

void readTextFile(string file_path)
{
   StreamReader inp_stm = new StreamReader(file_path);

   while(!inp_stm.EndOfStream)
   {
       string inp_ln = inp_stm.ReadLine( );
       // Do Something with the input. 
   }

   inp_stm.Close( );  
}

EDIT: (Correction d'une erreur sur la ligne 9; changé "stm.ReadLine ();" en "inp_stm.ReadLine ();")


27

Il existe une classe nommée TextAssets qui est utilisée pour la lecture de fichiers texte. http://docs.unity3d.com/Manual/class-TextAsset.html Ici vous pouvez trouver le format de fichier pris en charge.

Donc, si vous voulez lire le fichier texte, le script serait comme ceci:

class YourClassName : MonoBehaviour{
    public TextAsset textFile;     // drop your file here in inspector

    void Start(){
        string text = textFile.text;  //this is the content as string
        byte[] byteText = textFile.bytes;  //this is the content as byte array
    }
}

ou vous pouvez lire le texte comme ressource comme ceci:

TextAsset text = Resources.Load("YourFilePath") as TextAsset;

7
Il convient également de mentionner que la TextAssetquestion en question devrait probablement être placée dans le Assets/Resourcesdossier. C'est la réponse la plus correcte car toutes les autres réponses semblent ignorer le fait que cela se trouve dans Unity. Ce sont des façons correctes de lire un fichier en C # mais ils ignorent des choses comme le déploiement et les chemins multiplateforme.
McAden

1
Si vous utilisez TextAsset, vous faites glisser la référence vers un MonoBehaviour et utilisez la propriété yext. Dans ce cas, il n'a pas besoin d'être dans Respurces
Rakka Rage

4

Vous pouvez le faire de la même manière que vous le feriez dans .NET

string word = File.ReadAllText(txtFilePath);

Cet extrait de code peut alors être utilisé à n'importe quel endroit de votre choix.


2

Ce code fonctionne bien pour moi pour lire le contenu du fichier texte

import System.IO;

var filename="data.txt";

function Start () {
    var sourse=new StreamReader(Application.dataPath+"/" + filename);
    var fileContents=sourse.ReadToEnd();
    sourse.Close();
    var lines=fileContents.Split("\n"[0]);
    for(line in lines) {
        print(line);
    }
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.