2017-03-01 36 views
0

我有幾個短語在他們的文本文件(答案)。在一個文本文件,例如我有150個短語。我正在一個釣魚遊戲。當你趕上魚,答覆出現(來自文本文件),並出現在屏幕中間。我認爲,如果我把我的文本文件在Assets文件夾中,那麼一切都會好起來的,但沒有! :(如何把文本文件內容字典c#團結

這裏是我的代碼,我回到我行(回答):

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]; 

} 

在PC上,當我點擊播放按鈕,它那做工精細,這裏是一個形象:

game

對不起,我的文本文件是一個隨機行。問題是我在平板電腦或android手機上生成項目後。我的文本文件的答案沒有顯示在我的屏幕上。 我想嘗試另一種與詞典的方法或者使用字符串列表,但是我怎樣才能在文件中的文本列表上放置150多行?

我有另外一個問題:

1.爲什麼不是我的方法的工作(我想,我的文本文件沒有在建或不放入項目的正確的文件夾)

2.是我可以嘗試加載我的線(答案)的另一種方法?

3.作爲這個問題,我有另外一個場景。當你釣到一條金魚時,會出現一個轉換(屏幕變黑,屏幕恢復正常),當你可以玩時,輪盤賭。這個場景不在我的android設備上加載。爲什麼?

+0

這聽起來像文本文件不包含在構建其他資源。你可以通過使用['StreamingAssets'文件夾](https://docs.unity3d.com/Manual/StreamingAssets.html)來包含任意文件,但對於像這樣的東西,可能更容易使用['TextAsset']( https://docs.unity3d.com/Manual/class-TextAsset.html)。 – rutter

回答

0

它需要位於Resources文件夾中。 Unity會將其視爲「TextAsset」。 一旦你建立它將會只讀。

您將需要使用這樣的功能來拆分New Lines上文件的內容並返回一個字符串列表。

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處理字典。 –