アマゾンバナーリンク

ディスプレイ広告

スポンサーリンク

UnityのDebug.Logをゲーム画面に表示する

2020年7月20日

Photonでオンラインゲームを作っていると、2窓以上でDebug.Logのメッセージを取得したい場合が必ずあります。今回はその方法を紹介します。

まずはソースの作成でLogMenu.csという以下の様にコード書きます。

記事内広告

LogMenu.cs

using UnityEngine;
using UnityEngine.UI;
public class LogMenu : MonoBehaviour
{
[SerializeField]
private Text m_textUI = null;
private void Awake()
{
Application.logMessageReceived += OnLogMessage;
}
private void OnDestroy()
{
Application.logMessageReceived += OnLogMessage;
}
private void OnLogMessage(string i_logText, string i_stackTrace, LogType i_type)
{
if (string.IsNullOrEmpty(i_logText))
{
return;
}
// 下のチェックがないとMissingReferenceExceptionThe object of type "Text" has been destroyedが起こるので注意
if (m_textUI == null)
{
return;
}
if (!string.IsNullOrEmpty(i_stackTrace))
{
switch (i_type)
{
case LogType.Error:
case LogType.Assert:
case LogType.Exception:
i_logText += System.Environment.NewLine + i_stackTrace;
break;
default:
break;
}
}
switch (i_type)
{
case LogType.Error:
case LogType.Assert:
case LogType.Exception:
i_logText = string.Format("<color=red>{0}</color>", i_logText);
break;
case LogType.Warning:
i_logText = string.Format("<color=yellow>{0}</color>", i_logText);
break;
default:
break;
}
m_textUI.text += i_logText + System.Environment.NewLine;
}
} // class LogMenu

スクロール機能付きのキャンバスの作成

  1. UI→ScrollViewで作成した後、DebugCanvasと名前を変更
  2. DebugCanvasにLogMenu.csをアタッチ
  3. Contentを下の図のようにTextUIにアタッチ

もし3の前にContentにTextがついてなかったら、AddComponetでTextを追加しましょう。

実行結果

これでDebug.LogをconsolだけでなくCanvasにも表示することができました!

C#,Unity

Posted by ジェイ