私はストリーム・リーダーを持っています。データをプログラムに解析するために使用しています。メインメニューから最初にシーンを開くと、ストリームリーダーがデータを解析するときに正しく動作します(コードが長いので、スニペットで解析を省略しました)。最初の実行時に画面に出力されるtext.textはGです。メインメニューに戻ってこのシーンに戻っても、text.text出力はテキスト文書の最初の行です.text = lineと私は理由を理解しようとしています。 sr.Close()はストリームリーダーを閉じる適切な方法ではありませんか?または、ファイルが何らかの形でまだ開いていますか?誰もが提供できるあらゆる助けを進んでいただきありがとうございます。Unityのシーンをリロードした後にStreamReaderが正しく動作しない
void Start() {
text.text = "A";
trimAndPlaceDataSets = GetComponent<TrimAndPlaceDataSets>();
text.text = "B";
string AthenaData = Application.streamingAssetsPath + "/Athena.txt";
text.text = "C";
PopulateAthenaData(AthenaData);
}
void PopulateAthenaData(string s){
text.text = "D";
using (StreamReader sr = new StreamReader(s)) {
text.text = "E";
string line = sr.ReadLine();
text.text = line;
while (line != null) {
//Do Stuf
sr.ReadLine();
}
sr.Close();
text.text = "G";
}
}
そして、私は私のシーンStreamReaderクラスがインタフェースIDisposableを実装しているので、これは適切な方法であなたのために近いストリームを行う使用
public void LoadPressed() {
scenesDropdown.gameObject.SetActive(false);
loadButton.SetActive(false);
SceneManager.LoadScene(scenesArray[scenesDropdown.value]);
}
「IDisposable」を実装する「StreamReader」などのクラスで「using」ステートメントを使用することを検討してください。 'StreamReader'がスコープから脱落すると、それは自動的にクローズされて処分され、特に例外処理を考慮して、ロジックを単純化します。 – STLDeveloper
これらのシーンにどのくらい正確に戻っていますか?ゲームの実行中にLoadScene()を使用していますか? –
メインメニューからSceneManager.LoadScene(文字列)を使用しています。編集にコードを追加しました。 –