2016-12-11 10 views
0

私は1週間前に非常によく似た質問をしましたが、まだ答えを見つけようとしています。Unity3DでのC#system.process stdin/stdout処理

私はUnity3Dプロジェクトを完全にセットアップし、そこにオブジェクトを入れ、C#スクリプトを作成し、次のコードをStart()メソッドに入れます。

Linux Ubuntuシステムのプロジェクトをビルドして実行します。新しい端末が現れ、それがそれです。通常、ブラウザは開いている必要がありますが、ブラウザは開いていません。

これは私のテストプログラムです。私の起源では、stdin/stdoutから読み書きする必要があります。

私は完全に絶望的だとうまくいけば、あなたの誰も私に

おかげ

+0

最後にストリームライターを閉じようとしましたか? 'myProcess.StandardInput.Close();' – Bijan

+0

はい、この場合、端末はまだ開いていますが、何も起こりません。 –

+0

"sensible-browser"も書いていない場合は、遅れて最後の行を呼び出してみてください。 – Bijan

答えて

0

利用bashの代わりgnome-terminalを助けることができます。

Process myProcess = new Process(); 
myProcess.StartInfo.FileName = "bash"; 
myProcess.StartInfo.UseShellExecute = false; 
myProcess.StartInfo.RedirectStandardInput = true; 
myProcess.Start(); 
myProcess.StandardInput.WriteLine("sensible-browser"); 
myProcess.StandardInput.Close(); 
+0

私はあなたのコードをコピーしますが、私がそれを実行しても何も起こらず、端末がまだ開かれていません。私は完全なPATHでそれを試すと同じ結果になります:myProcess.StartInfo.FileName = "/ bin/bash"; –

+0

あなたのコードは** mono **では動作しませんが、私の作品は(Ubuntu 14.04でテストされています)。私はLinux用のUnity3Dをインストールしていないので、Unity3Dが使用するモノでコードをテストすることはできません。 – zwcloud

+0

私はWindowsシステムでプロジェクトを開発し、それを "Linux x86"プラットフォーム用にビルドします。私は14.04.3のUbuntuマシンでそれを実行しようとします、そして私のメインプログラムは何のエラーもなく実行されます。あなたの2番目の質問について:はい、私は新しいプロジェクトを作成し、シーン内の単純なキューブにスクリプトを添付しました(テスト用のみ) –