Unity:デバッグ機能(ローグライクを自分なりの解釈で作ってみる)
イメージ
概要
プラットフォーム判別
現在どのプラットフォームで動いているかを判別できます. これにより特定のプラットフォームでは一連の処理を無視することが可能になります.
下記のサイトがとてもわかり易くて参考になりました
私は今回【UNITYEDITOR】でのみデバッグ機能を動作させたいので対象箇所に
#if UNITY_EDITOR #endif
を追加します
コード
using UnityEngine; using System.Collections; public class PlayerStatus : MonoBehaviour { StateManager sm; int m_HP = 20; Animator anim; public int HP{ get { return m_HP; } set { m_HP = m_HP + value; } } void Start(){ sm = StateManager.Instance; anim = GetComponent<Animator>(); } public void Receive(int damage) { anim.SetTrigger("Damage"); HP -= damage; sm.HP.text = HP.ToString(); } #if UNITY_EDITOR void OnGUI() { if (GUI.Button(new Rect(10, 10, 150, 100), "HP:+999")) { HP = 999; sm.HP.text = HP.ToString(); } } #endif }
デバッグ機能をまとめる
デバッグ機能と本機能がごちゃごちゃに混ざり合って可読性が落ちている気がします なのでpartialを利用してデバッグ機能と本機能を分けてあげます 参考ページ http://ftvoid.com/blog/post/803
コード
本機能
using UnityEngine; public partial class PlayerStatus : MonoBehaviour { StateManager sm; int m_HP = 20; Animator anim; public int HP{ get { return HP; } set { m_HP = m_HP + value; } } void Start(){ sm = StateManager.Instance; anim = GetComponent<Animator>(); } public void Receive(int damage) { anim.SetTrigger("Damage"); HP -= damage; sm.HP.text = HP.ToString(); } }
デバッグ機能
#if UNITY_EDITOR using UnityEngine; public partial class PlayerStatus{ void OnGUI() { if (GUI.Button(new Rect(10, 10, 150, 100), "HP:+999")){ HP = 999; sm.HP.text = HP.ToString(); } } } #endif
UnityEditor上でもデバッグ機能をOFFにしたい.
UnityEditorを条件にしてしまうと実機テストするまでデバッグ機能がオフになったときの動作を確認することが出来ません.なのでUnityEditorで分けるのではなく独自の条件を追加してあげると良いかもしれません. File->Build Settings->PlayerSettings->Other Settings->Scripting Define Symbolsに新たに条件を追加してあげます.今回はDEVELOPという条件を追加してあげました.
この箇所を削除すればDEVELOPで囲まれたコードは無視無視お疲れ様でした. もちろんこの箇所にDEVELOPを残していればEditor上でもDEVELOP機能のチェックができるよ
コレで気兼ねなくデバッグ機能を追加できそうです