Star☆Unityメモ

Unityのちょっとしたことをメモって後で見返せれたらいいなサイト

Unity:デバッグ機能(ローグライクを自分なりの解釈で作ってみる)

 イメージ

f:id:zvn_X:20170127015400g:plain

概要

  1. デバッグ中にキャラクターのHPが0になるといろいろと面倒くさかったのでデバッグ機能を追加する
  2. HPを+999するボタンを設置する.
  3. デバッグ機能はEditorで開いているときにのみ表示させたい

プラットフォーム判別

現在どのプラットフォームで動いているかを判別できます. これにより特定のプラットフォームでは一連の処理を無視することが可能になります.

下記のサイトがとてもわかり易くて参考になりました

qiita.com

私は今回【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という条件を追加してあげました. f:id:zvn_X:20170211030637p:plain

この箇所を削除すればDEVELOPで囲まれたコードは無視無視お疲れ様でした. もちろんこの箇所にDEVELOPを残していればEditor上でもDEVELOP機能のチェックができるよ

コレで気兼ねなくデバッグ機能を追加できそうです