File.StreamWriter(filePass)
で書き込みをしたんですが、
どうも__Unity__画面から一旦離れないと書き込んだ内容が更新されないようで困ってます。
一旦離れるというと、Playモードのまま、特に__VisualStudio__に限らず
ちょっと他のウインドウをクリックした程度で更新されます。
アタッチしたコード
そのコードですが、MainCameraにつけてあります。ただ、コードが原因かは暗黒です。
C#
1class Error : MonoBehavior{ 2 public int index = -1; 3 public GameObject wordBox;//ButtonPrefabを入れてあることにします。 4 static internal List<string> words = new List<string>(); 5 Transform content; 6 Text inputText; 7 8 9 Void Start() { 10 inputText 11 = GameObject.Find("InputField").transform.GetChild(1).GetComponent<Text>(); 12 content = GameObject.Find("ScrollView").transform; 13 ScreenUpdate(); 14 } 15 16 public void AddButton() { 17 dl.Add(inputText.text); 18 print("保存しました。"); 19 inputText.text = ""; 20 DataUpdate(); 21 ScreenUpdate(); 22 } 23 24 public void DeleteButton() { 25 if(index == -1) 26 print("!!削除するアイテムを指定してください!!"); 27 else { 28 dl.RemoveAt(index); 29 print("削除しました。"); 30 } 31 DataUpDate(); 32 ScreenUpdate(); 33 } 34 35//////////ここが例のファイル書き出し地点です////////// 36 static internal void DataUpdate() { 37 StreamWriter sw = new StreamWriter(Application.dataPath + @"/Resources/Data.txt"); 38 sw.Write(string.Join("ゎ", words.ToArray())); 39 sw.Flush(); 40 sw.Close(); 41 } 42 43 void ScreenUpdate() { 44 dl.Clear(); 45 string[] dl = Resources.Load("Data.txt").Split('ゎ');//not 'わ' 46 //→ゎなんて使うこと無いでしょってことで区切り記号にしました。改行は結構使うので 47 GameObject button; 48 while(button = GameObject.Find("ButtonPrefab(Clone)")) { Destroy(button);} 49 for(int i = 0, l = dl.Length; i < l; i++) { 50 button = Instantiate(wordBox,content); 51 button.GetComponent<RectTransform>().anchoredPosition 52 = new Vector2(0,-100*i); 53 words.Add(button.transform.GetChild(0).GetComponent<Text>().text = dl[i]); 54 } 55 } 56}
こっちがButtonPrefabのスクリプトです
C#
1class Error : MonoBehavior{ 2 3 internal int index; 4 5 public void SelectWord() { 6 GameObject.Find("MainCamera").GetComponent<Error>().index = index; 7 } 8 9}
そしてこれを
ButtonPrefabが押されたらSelectWord()
を、
追加ボタンが押されたらAddButton()
を、
削除ボタンが押されたらDeleteButton()
を
呼ぶように組んだのですが、追加しても削除してもボタンの内容が変化してないです。
試したこと
まずは、__Visual Studio__のオプションからいじってみました。
環境→ドキュメントの項目
保存されていない変更がない限り、変更されたファイルを再読み込みする。
にチェック入れました。
これにチェックが入ってないと__Visual Studio__開かないと更新されないことがわかりました。
だからと言って入ってても__Unity__画面のまま更新されることはなかったのですが
念のためコードも見直してみました。
C#
1 FileInfo fi; 2 fi = new FileInfo(Application.dataPath + @"/Resources/Data.txt"); 3 StreamWriter sw = fi.AppendText(); 4 sw.AutoFlush = true; 5 sw.Write(string.Join("ゎ", words.ToArray()),false);
ここにある奴の組み合わせを変えたりなどしてやってみましたが、
FileInfo.AppendText()
使うと追記されるようになって何やっても上書きできなくなりました。
しかもテキストが更新した訳でもなかったので、今回特に関係ありませんでした。
AutoFlush
=true
は単にFlush()
,Close()
を自動で行ってくれるだけっぽかったです。
これも、一旦Unityを離れるまでテキストが更新されることはありませんでした。
まるで原因が分かりません。
何をすれば__Unity__上で変更を検出してくれるんでしょうか。
回答1件
あなたの回答
tips
プレビュー