2017-03-01 13 views
0

テキストファイルにいくつかのフレーズが含まれています(回答)。たとえばテキストファイルには150個のフレーズがあります。私は釣りゲームで作業しています。魚、返信(テキストファイルから来る)が表示され、画面の中央に表示されます。私はアセットフォルダにテキストファイルを置くと、すべてが問題ありません。 :(ここテキストファイルの内容を辞書C#ユニティに入れる方法

が、私は私のライン(答え)を返す私のコードです:PC上で

public string filename333 = "try.txt"; 

public string getRandomMessagefromRechin() 
{ 

    var sr = new StreamReader(Application.dataPath + "/" + fileName1); 
    var fileContents = sr.ReadToEnd(); 
    sr.Close(); 
    var mydata = fileContents.Split("\n"[0]); 
    var myrandom = Random.Range(1, mydata.Length); 
    return mydata[myrandom]; 

} 

、私はPLAYボタンを押したときに、それがうまく働いてよ、ここの画像は次のとおりです。

game

申し訳ありませんが、私のテキストファイルのランダムな行です。問題は、タブレットまたはAndroid携帯でプロジェクトをビルドした後です。テキストファイルの回答が画面に表示されません。 別の方法で辞書を試してみてくださいまたは文字列のリストを使用することができますが、ファイルのテキストのリストに150行以上の行を挿入するにはどうすればよいですか?

私は別の質問がある:

1.Whyは私の方法の作業ではありません(私は私のテキストファイルが構築されていないと仮定し、またはプロジェクトの右のフォルダに置かれていない)

2.私の行(回答)を読み込もうとする別の方法はありますか?

3.私は別のシーンを持っています。金魚を捕まえた後、トランジションが現れます(画面が黒くなり、画面が正常に戻ります)。ルーレット。このシーンは私のアンドロイドデバイスにロードされていません。どうして?

+0

これは、テキストファイルのように聞こえるんがビルドに含まれていない他のリソースのようにそれをロードする必要があります。 ['StreamingAssets'フォルダ](https://docs.unity3d.com/Manual/StreamingAssets.html)を使って任意のファイルを含めることができますが、このような場合は[TextAsset']( https://docs.unity3d.com/Manual/class-TextAsset.html)。 – rutter

答えて

0

リソースフォルダにある必要があります。 Unityはそれを "TextAsset"として扱います。 一度ビルドすると読み取り専用になります。

ファイルの内容を新しい行に分割して文字列のリストを返すには、このような関数を使用します。

private List<string> TextAssetToList(TextAsset ta) { 
    return new List<string>(ta.text.Split(System.Environment.NewLine)); 
} 

また

TextAsset myTxt = Resources.Load("try") as TextAsset; 
List<string> strLines = TextAssetToList(myTxt); 
+0

より構造化されたルートに行きたい場合(そしてテキストベースのデータの場合は)、そのようなデータ型をロードして出力できるメソッドが必要になります。だから、あなたは何らかの種類のシリアライゼーションを介してXMLを調べたいと思うだろう。私は、例えばdatacontracts辞書を扱うと思います。 –

関連する問題