Unityのエディタでは動作するけど実機だと動作しない場合や、スマホのセンサーなどを使う場合には Debug.Log に代わるものが欲しかったりする。
そこでキャンバスにTextを追加してパラメータを表示するプログラムを作った。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
using System; using UnityEngine; using UnityEngine.UI; public class AlertUtil : MonoBehaviour { public static void Alert<T>(T m) { string msg=m+""; GameObject a = GameObject.Find("Label/Text"); if(a!=null){ a.GetComponent<Text>().text=msg+"\r\n"+a.GetComponent<Text>().text; }else{ GameObject g = new GameObject("Label"); Canvas canvas = g.AddComponent<Canvas>(); canvas.renderMode = RenderMode.ScreenSpaceOverlay; g.AddComponent<CanvasScaler>(); g.AddComponent<GraphicRaycaster>(); GameObject g2 = new GameObject("Text"); g2.transform.parent = g.transform; Text t = g2.AddComponent<Text>(); g2.GetComponent<RectTransform>().anchoredPosition=Vector2.zero; g2.GetComponent<RectTransform>().sizeDelta = new Vector2(1000,1000); t.alignment = TextAnchor.MiddleCenter; t.font = (Font)Resources.GetBuiltinResource (typeof(Font), "Arial.ttf"); t.fontSize = 60; t.text = msg; t.enabled = true; t.color = Color.red; } } } |
これをAssetsに追加するだけでOK。
使い方は主にこんな感じ。
1 2 3 4 5 |
try { ... } catch (Exception e) { AlertUtil.Alert(e.Message); } |
見た目はこんな感じで、新しいものが上に追加されて下のほうが見切れていきます。
基本デバッグにしか使えませんが実機でのよくわからないクラッシュなんかで役立つかもしれないです。