スクリプトから設定する
using UnityEngine;
//ゲームマネージャークラス
public class GameManager : MonoBehaviour
{
private void Awake()
{
Debug.unityLogger.logEnabled = false; //デバッグログを非表示にする
}
private void Start()
{
Debug.Log("START"); //デバッグログを表示
}
}
このコードでは、デバッグログを表示しないように設定しています。
Debug.unityLogger.logEnabled = false; //デバッグログを非表示にする
非表示にするだけなら、この一文で実現することが出来ます!
デバッグログ表示の設定用アセットを作成
ここからは、デバッグログの表示非表示の設定を気軽にできるように、すこし工夫していきます!
設定用ScriptableObjectを実装する
using UnityEngine;
//ゲームの設定用ScriptableObject
[CreateAssetMenu(menuName = "ScriptableObject/GameSettings", fileName = "GameSettings")]
public class GameSettings : ScriptableObject
{
public bool debugLogEnabled; //デバッグログを表示するか
}
このコードは、ゲーム用の設定値を保存しておくためのScriptableObjectを実装しています。
このコードをプロジェクトに追加します。
↑↑ScriptableObjectの詳しい紹介はこちらの記事をチェック!↑↑
実装したScriptableObjectは、
①Projectウィンドウで右クリック
②Create
③ScriptableObject
④GameSettings
の手順で作成することが出来ます!
GameManagerに設定用アセットを設定する
using UnityEngine;
//ゲームマネージャークラス
public class GameManager : MonoBehaviour
{
[SerializeField] private GameSettings _gameSettings; //ゲームの設定データ(追記)
private void Awake()
{
Debug.unityLogger.logEnabled = _gameSettings.debugLogEnabled; //デバッグログを非表示にする
}
private void Start()
{
Debug.Log("START"); //デバッグログを表示
}
}
GameManagerクラスにScriptableObjectを設定できるように、変数を追記しました。
GameManagerクラスを更新したら、HierarchyでGameManagerを選択して、Inspectorにて先ほど作成したScrptableObjectをアタッチします。
これで、デバッグログを非表示にしたい時は、チェックを外すことで非表示にすることが出来るようになりました!
補足
設定をAseet化しておくことで、GameManagerを直接編集しないことになり、複数人での開発時にGameManagerをお互いに更新してしまい、エラーが発生するという事故が起こらなくなります!
出来るだけ担当者以外が、直接編集しなくて済むように心がけてみてください!
Debug.Logは意外と重い
デバッグログは意外と重い処理で、Update内で毎フレーム実行してしまうとアプリの動作が重くなる原因になります。
実は、非表示にせずにビルドをしてしまうと、ビルド後のアプリでも裏でデバッグログは実行され続けてしまいます。
なので、ビルド前はデバッグログを非表示にするようにすると、余計にアプリが重くなることを防ぐことが出来ます!