前提・実現したいこと
C#とUnityの相互通信を作成しようとしています。
作成方法としてはこちらを参考に作成しています。
OutPutDataReceivedで取得した標準出力とUnity側で設定したstringをif文で比較することで、マウスのオン/オフの状態を取得しようと考えています。
発生している問題・エラーメッセージ
発生している問題として、取得した標準出力とあらかじめ用意したstringが一致しません。
Debug.Logで「取得した出力」と「用意したstring」を比較してみたところ、まったく同じ内容でした。
コード内容
Process cmdprocess; private const string MOUSE_ON = "0"; private const string MOUSE_OFF = "1"; private string s; void Start() { cmdprocess = new Process(); cmdprocess.StartInfo.FileName = "起動するexe名"; cmdprocess.EnableRaisingEvents = true; cmdprocess.Exited += cmdprocess_Exited; cmdprocess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; cmdprocess.StartInfo.UseShellExecute = false; cmdprocess.StartInfo.RedirectStandardOutput = true; cmdprocess.StartInfo.RedirectStandardInput = true; // 標準出力イベント設定. cmdprocess.OutputDataReceived += OutputHandler; cmdprocess.Start(); cmdprocess.BeginOutputReadLine(); } private void OutputHandler(object sender, System.Diagnostics.DataReceivedEventArgs args) { UnityEngine.Debug.Log(args.Data); s = args.Data; if (s == MOUSE_ON) { UnityEngine.Debug.Log("Yes!"); } else if (s == MOUSE_OFF) { UnityEngine.Debug.Log("No!"); } else { UnityEngine.Debug.Log("Not Matching." + "\nargs.Data: " + args.Data + "\nMOUSE_ON: " + MOUSE_ON + "\nMOUSE_OFF: " + MOUSE_OFF); } }
試したこと
- 取得した標準出力「args.Data」を「string s」に代入してからif文を行いました。
//OutPutHandler内 string s = args.Data; if(s == MOUSE_ON) { Debug.Log("mouse on."); } else if (s == MOUSE_OFF) { Debug.Log("mouse off."); } else { Debug.Log("Not Matching." + "\n" + args.Data + "\n" + MOUSE_ON + "\n" + MOUSE_OFF); }
結果は変わりませんでした。
- 取得した標準出力をUTF-8に変換してif文を行いました。
//OutPutHandler内 byte[] encbyte = enc.GetBytes(args.Data); byte[] encConByte = Encoding.Convert(enc, utf8, encbyte); string s = utf8.GetString(encConByte); if(s == MOUSE_ON) { Debug.Log("mouse on."); } else if (s == MOUSE_OFF) { Debug.Log("mouse off."); } else { Debug.Log("Not Matching." + "\n" + args.Data + "\n" + MOUSE_ON + "\n" + MOUSE_OFF); }
こちらも結果は変わりませんでした。
補足情報(FW/ツールのバージョンなど)
Unity: 2017.1.1f1
C#: VisualStudio 2017
回答1件
あなたの回答
tips
プレビュー