コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】ゲーム内にデバッグ用のカスタマイズ可能なボタンを表示できる「UniDebugPanel」を GitHub に公開しました

はじめに

ゲーム内にデバッグ用のカスタマイズ可能なボタンを表示できる
「UniDebugPanel」を GitHub に公開しました

開発環境

  • Unity 2018.2.2f1

導入方法

  1. 下記のページにアクセスして
    「UniDebugPanel.unitypackage」をダウンロードします
    https://github.com/baba-s/uni-debug-panel/blob/master/UniDebugPanel.unitypackage?raw=true
  2. ダウンロードした「UniDebugPanel.unitypackage」を
    Unity プロジェクトにインポートします

使い方

事前準備

f:id:baba_s:20180805104628p:plain

Unity メニューの「File>Build Settings...」から「Player Settings...」を選択し、
「Scripting Define Symbols」に「ENABLE_DEBUG_PANEL」と入力します

基本的な使い方

f:id:baba_s:20180805104734p:plain

シーンに「UniDebugPanelUI」プレハブを配置します

using KoganeLib.UniDebugPanel;
using UnityEngine;
using UnityEngine.UI;

public class Example : MonoBehaviour
{
    public UniDebugPanelUI m_debugPanelUI = null;
    public Button          m_buttonUI     = null;

    private void Start()
    {
        m_debugPanelUI.DoSetDisp
        (
            new UDPData( "ロック"    , () => m_buttonUI.interactable = false ),
            new UDPData( "アンロック", () => m_buttonUI.interactable = true  )
        );
        
    }
}

そして、上記のようなスクリプトを作成します

f:id:baba_s:20180805105108g:plain

これで、そのシーンからデバッグ用の機能を呼び出せるようになります

DontDestroyOnLoad による使い方

f:id:baba_s:20180805105623p:plain

「UniDebugPanelUI」プレハブを「Resources」フォルダに格納します

using KoganeLib.UniDebugPanel;
using UnityEngine;

public static class Example
{
    [RuntimeInitializeOnLoadMethod( RuntimeInitializeLoadType.BeforeSceneLoad )]
    private static void Init()
    {
        var name   = "UniDebugPanelUI";
        var prefab = Resources.Load<UniDebugPanelUI>( name );
        var obj    = GameObject.Instantiate( prefab );

        GameObject.DontDestroyOnLoad( obj.gameObject );
    }
}

さらに、RuntimeInitializeOnLoadMethod 属性が適用された static 関数を定義して
ゲーム開始時に UniDebugPanelUI のプレハブを生成するようにします

using KoganeLib.UniDebugPanel;
using UnityEngine;
using UnityEngine.UI;

public class Example : MonoBehaviour
{
    public Button m_buttonUI = null;

    private void Start()
    {
        UniDebugPanelUI.SetDisp
        (
            new UDPData( "ロック"    , () => m_buttonUI.interactable = false ),
            new UDPData( "アンロック", () => m_buttonUI.interactable = true  )
        );
        
    }
}

そして、上記のようなスクリプトを作成します

f:id:baba_s:20180805105836g:plain

これで、いつでもデバッグ用の機能を呼び出せるようになり、
シーンを切り替えても UniDebugPanelUI オブジェクトが残り続けます

リリースビルド時に無効化する

f:id:baba_s:20180805110417p:plain

Unity メニューの「File>Build Settings...」から「Player Settings...」を選択し、
「Scripting Define Symbols」から「ENABLE_DEBUG_PANEL」を削除すると
UniDebugPanelUI の機能はすべて無効化されます

開発中は「ENABLE_DEBUG_PANEL」を定義しておき、
ゲームのリリース時に「ENABLE_DEBUG_PANEL」を削除することで
UniDebugPanelUI の機能をリリースビルドから除外できます