2017-07-27 5 views
0

コンソールログを読まずにUnityで実行中のC#スクリプトでエラーを検出することはできますか? ゲームをビルドしてモバイルでテストしなければならないときは、これが必要です。実行中にエラーが発生すると、エラーを示すメッセージボックスが表示されます。コンソールが表示されていない状態で実行しているときに、C#でエラーが発生しているかどうかを検出するにはどうすればよいですか?

私はUnity Log Viewerを使用して、デバイス内のすべてのログを印刷できることを理解しています。しかし、私はこれを行う別の方法を求めます。私はもっ​​と簡単な解決策を求めます。私のソリューション私はそれがエディタで正常に実行されたときにマイナーエラーを検出するのが最善だと思うが、showMessageBox Errorを表示するだけでデバイスで実行しているときに問題が発生する。

実行時に何か問題があるかどうかを検出する必要があります。 Debug.LogErrorがあり、エラーを検出できることがわかりました。しかし、Debug.LogErrorは、私たちがオブジェクトのエラーが何であるかを指摘するだけで、メッセージタイプを表示します。私が必要とするのは、コンソールのようなグローバルエラーを検出し、ユニティエンジンからのエラーメッセージを表示することです。誰かが、その後、私が何を意味するかを理解してください私の溶液を得た場合

void Update() { 
     showMessageBox(isErrorDetect()); 
} 

showMessageBox => is a function to show message box. 
isErrorDetect => this will print an error if detect like a console. 

:私はのようなものかもしれ必要なもの

ありがとうございました

+0

あなただけのテキストボックスのUI要素に扱わ例外をログに記録することができます。ゲーム内のメッセージログを持つことは、ゲーム(デバッグモードになっているとき)にはよくあることです。 – Serlite

+0

私は、C#でスクリプトを使ってコンソールからエラーログを取得する方法を教えていますか? –

答えて

1

だから誰も私が何を意味するのか理解していません。しかし、私は解決策を自分のものにしました。

私たちは使用できます:Application.logMessageReceived私はそれを意味します。

デバイスでゲームを実行しているときにエラーが発生した場合、以下のスクリプトがポップアップします。まだテストされていません。しかし、私はそれが動作することを確認します。エディターでエラーが発生していなくても、モバイルで実行中にエラーが発生したときに役立ちます。

私はそれを自分で作っています。例:

using UnityEngine; 
using System.Collections; 
using UnityEngine.UI; 

public class ErrorHandlePopUp : MonoBehaviour { 
    public Image PopUp; 
    string error; 
    // Use this for initialization 
    void Start() { 

    } 

    // Update is called once per frame 
    void Update() { 

    } 

    void OnEnable() { 
     Application.logMessageReceived += HandleLog; 
    } 

    void OnDisable() { 
     Application.logMessageReceived -= HandleLog; 
    } 

    void HandleLog(string logString, string stackTrace, LogType type) { 

     if (type == LogType.Error) { 
      error = error + "\n" + logString; 
      PopUp.gameObject.SetActive (true); 
      PopUp.transform.GetChild (0).GetComponent<Text>().text = "Error"; 
      PopUp.transform.GetChild (1).GetComponent<Text>().text = error; 
     } 
    } 

    public void Dismiss() { 
     PopUp.gameObject.SetActive (false); 
    } 

} 
0

IDEのデバッガを使用することをお勧めします。私はあなたがMonodeveloperまたはVisual Studioであなたのスクリプトを書いていると仮定します。どちらもデバッグできます。

Unityの公式ウェブサイトでさえ、ゲームが複雑になると夢中になる巨大なDebug.Logではなく、デバッガを使用することをお勧めします。

あなたはここにこの詳細を読むことができます:

https://unity3d.com/es/learn/tutorials/topics/scripting/monodevelops-debugger

+0

こんにちは..別の解決策をくれてありがとう。しかし、スクリプトAがスクリプトBの前に実行される必要があるような場合がありますが、モバイルスクリプトBがスクリプトAより前に実行されているときにエラーが発生しますが、エディタでは正常に実行されているような場合があります。実行順序スクリプトを設定できることはわかっていますが、スクリプトAがプラグインアセットの場合、私たちが望むように注文を設定することはできません。これは私が実行する前に私のスクリプトBを遅らせるための解決策を与える開発者に連絡するとき私に起こります。これは、スクリプトA(プラグイン)の終了を完了させるようなものです。エディタを操作した後でも、デバイス内で円滑に実行されません。 –

関連する問題