質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

1193閲覧

Objectに視線があたったときの時間のLogを取りたいです。

Gakuseitasukete

総合スコア16

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2018/12/20 05:49

前提・実現したいこと

下記のプログラムに自分で作成したログを取るプログラムを入れて実行してもLog自体が取れません。
また、ifの部分を変えて何回も取り組みましたができません

発生している問題・エラーメッセージ

Objectは光るがLogは取れていない

該当のソースコード

C#

1using UnityEngine; 2 3public class FOVELookSample : MonoBehaviour 4{ 5 public Light attachedLight; 6 public FoveInterfaceBase foveInterface; 7 8 private Collider my_collider; 9 private Material material; 10 private bool light_attached = false; 11 12 void Start() 13 { 14 my_collider = GetComponent<Collider>(); 15 16 if (attachedLight == null) 17 attachedLight = transform.GetComponentInChildren<Light>(); 18 19 if (attachedLight) 20 { 21 light_attached = true; 22 attachedLight.enabled = false; 23 } 24 material = gameObject.GetComponent<Renderer>().material; 25 26 if (material == null) 27 gameObject.SetActive(false); 28 } 29 30 void Update() 31 { 32 if (foveInterface.Gazecast(my_collider)) 33 { 34 material.EnableKeyword("_EMISSION"); 35 36 if (light_attached) 37 { 38 material.SetColor("_EmissionColor", attachedLight.color); 39 attachedLight.enabled = true; 40 DynamicGI.SetEmissive(GetComponent<Renderer>(), attachedLight.color); 41 } 42 } 43 else 44 { 45 gameObject.GetComponent<Renderer>().material.color = Color.white; 46 material.DisableKeyword("_EMISSION"); 47 48 if (light_attached) 49 { 50 attachedLight.enabled = false; 51 DynamicGI.SetEmissive(GetComponent<Renderer>(), Color.black); 52 } 53 } 54 } 55} 56

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bochan2

2018/12/20 06:05

Logを入れた方のコードを追加出来ますか?
Gakuseitasukete

2018/12/20 06:08

using UnityEngine; public class hannnteiLog : MonoBehaviour { public Light attachedLight; public FoveInterfaceBase foveInterface; private Collider my_collider; private Material material; private bool light_attached = false; //private string datetimeStr; void Start() { my_collider = GetComponent<Collider>(); if (attachedLight == null) attachedLight = transform.GetComponentInChildren<Light>(); if (attachedLight) { light_attached = true; attachedLight.enabled = false; } material = gameObject.GetComponent<Renderer>().material; if (material == null) gameObject.SetActive(false); } void Update() { //StreamWriter sw; //FileInfo fi; //fi = new FileInfo(Application.dataPath + "/Log/hannteiLog/hanntei00.csv"); //sw = fi.AppendText(); if (foveInterface.Gazecast(my_collider)) { material.EnableKeyword("_EMISSION"); if (light_attached) { material.SetColor("_EmissionColor", attachedLight.color); attachedLight.enabled = true; DynamicGI.SetEmissive(GetComponent<Renderer>(), attachedLight.color); /* datetimeStr = System.DateTime.Now.Year.ToString() + "." + System.DateTime.Now.Month.ToString() + "." + System.DateTime.Now.Day.ToString() + "." + System.DateTime.Now.Hour.ToString() + "." + System.DateTime.Now.Minute.ToString() + "." + System.DateTime.Now.Second.ToString() + "." + System.DateTime.Now.Millisecond.ToString(); sw.WriteLine(datetimeStr);*/ } //sw.Flush(); //sw.Close(); } else { gameObject.GetComponent<Renderer>().material.color = Color.white; material.DisableKeyword("_EMISSION"); if (light_attached) { attachedLight.enabled = false; DynamicGI.SetEmissive(GetComponent<Renderer>(), Color.black); } } } }
Gakuseitasukete

2018/12/20 06:09

//入れときました、追加のところには 光るところに光れば時間のLogを残すプログラムを入れればいけるかなとおもったものです。
guest

回答1

0

ベストアンサー

sw.FlushはStreamWriterの中身を空にしてしまうのでデータを書き込んだ後に実行すると書き込んだデータが消えてしまいます。
sw.Flushを削除すれば動作すると思います。
Flushの動作:

Clears all buffers for the current writer and causes any buffered data to be written to the underlying stream.

投稿2018/12/20 10:47

bochan2

総合スコア2050

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Gakuseitasukete

2018/12/26 09:31

確かに動きました。Logも残りました。 ありがとございます。
Gakuseitasukete

2018/12/26 09:36

エラーが出るのですが解決方法分かりますか? IOException: Sharing violation on path C:\Users\surfa\Desktop\New Unity Project 9\Assets\Log\hannteiLog\hanntei00.csv System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.IO/FileStream.cs:320) System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share) (wrapper remoting-invoke-with-check) System.IO.FileStream:.ctor (string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare) System.IO.FileInfo.Open (FileMode mode, FileAccess access, FileShare share) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.IO/FileInfo.cs:210) System.IO.FileInfo.Open (FileMode mode, FileAccess access) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.IO/FileInfo.cs:205) System.IO.FileInfo.AppendText () (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.IO/FileInfo.cs:178) (wrapper remoting-invoke-with-check) System.IO.FileInfo:AppendText () hannteiLog.Update () (at Assets/hannteiLog.cs:40)
bochan2

2018/12/26 12:48

ファイル構成や他の条件が絡んでくるので、ファイル書き込み部分だけのプログラムを作って別の質問にして下さい 申し訳ございません
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問