タイトルにあるように、Unityから外部のプログラムを立ち上げ、CLIのようなやりとりを行いたいと考えています。以下は現状までで出来ているサンプルコードになります。
cs
1using UnityEngine; 2using System; 3using System.IO; 4using System.Text; 5using System,Diagnostics; 6 7public class Password : MonoBehaviour 8{ 9 Process process = null; 10 StringBuilder output = null; 11 12 void Start() 13 { 14 string text = File.ReadAllText("password.txt"); 15 16 process = new Process(); 17 process.StartInfo.FileName = "password_checker.bundle"; 18 process.StartInfo.UseShellExecute = false; 19 process.StartInfo.RedirectStandardOutput = true; 20 output = new StringBuilder(); 21 22 process.OutputDataReceived += DataReceived; 23 24 process.StartInfo.RedirectStandardInput = true; 25 process.StartInfo.CreateNoWindow = true; 26 27 process.Start(); 28 29 using(StreamWrite sw = process.StandardInput) 30 { 31 sw.Write(text); 32 }; 33 34 process.BeginOutputReadLine(); 35 process.WaitForExit(); 36 process.Dispose(); 37 38 // for debug usage 39 UnityEngine.Debug.Log(output.ToString()); 40 } 41 42 void DataReceived(object sender, DataReceivedEventArgs eventArgs) 43 { 44 output.AppendLine(evnetArgs.Data); 45 } 46}
こちらのスクリプトを空のGameObject
にアタッチして起動すると以下のデバッグ出力になります。
UnityEngine
1Please note that password is NOT RECOVERABLE. 2Type password: Repeat password: 3 4 5UnityEngine.Debug:Log(Object) 6Decrypt:StartCL() (at Assets/Scripts/Password.cs:44) 7Decrypt:Start() (at Assets/Scripts/Password.cs:14)
こちらを以下の様にインタラクティブに行える事を想定しています。
process
立ち上げ後Please note that password is NOT RECOVERABLE.
がDebugに表示される。Type password:
がDebug表示されUnityからの入力を受け付ける。sw.Write(text)
によってpassword.txt内に記述されているパスワードを渡す。- 再度Debugに
Repeat password:
がDebugに表示され再入力を受け付ける。 - ⑶と同様にパスワードを再入力する。
- 認証結果をDebugに表示する、
C#初心者なので多くの内容を網羅していませんが参考になるコードやapiをご存知の方いらっしゃいましたらご教示いただけますと幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/14 12:56