メインコンテンツまでスキップ

🏷️ Attribute一覧

デバッグメニューを構築するための主要な属性(Attributes)です。

名前空間
using Logify;

🔘 [LogiButton]

メソッドを実行するための基本属性です。引数の有無により自動的にUIが切り替わります。

1. ボタンのみ(引数なし)

引数説明
第1引数ラベル名
第2引数ボタン内のテキスト
[LogiButton("Test Button", "Execute")]
void Test() { /* 処理 */ }

2. インプットあり(引数あり)

引数を持つメソッドに付与すると、値を入力して実行できるUIが生成されます。
string, int, float, bool, Enum に対応しています。

引数説明
第1引数ラベル名
第2引数ボタン内のテキスト
第3引数フィールドの初期値
[LogiButton("Test Integer", 10)]
void Test(int integer) { }

📥 [LogiInput]

値を直接入力・変更するための属性です。
string, int, float, bool, Enum に対応しています。

引数説明
第1引数ラベル名
第2引数フィールドの初期値
[LogiInput("Test Integer", 100)]
void Test(int integer) { }

🎚️ [LogiRange] / [LogiRangeButton]

数値を範囲指定(スライダー)で調整します。
int, float に対応しています。

引数説明
第1引数ラベル名
第2引数最小値
第3引数最大値
第4引数フィールドの初期値
[LogiRange("Test Range integer", 0, 100, 10)]
void TestRangeButton(int integer) { }

🖼️ [LogiPreview]

画像を確認できます。
SpriteTexture2D に対応します。

[LogiPreview("Test Sprite")]
Sprite GetPlayerIcon() => _playerIcon;

📝 Information Display

デバッグ情報を「表示」することに特化した属性です。

[LogiLabel]

シンプルなテキスト表示。

[LogiLabel]
string GetStatus() => "Test Label";

[LogiStatus]

ラベル付きのステータス表示。コピーボタンの表示オプションを選択可能です。

[LogiStatus("Test Status", true)]
string GetBuildSign() => $"Integer set to: {_integer}";

[LogiTextArea]

長文の確認や入力に適しています。

[LogiTextArea("Test Text Area")]
void UpdateLog(string text) { }

⚠️ Managed Stripping に関する注意点

Unityのビルド設定で Managed Stripping LevelMedium または High に設定されている場合、コード上で直接参照されていないメソッドやフィールドは、Unityによってビルドから削除(ストリップ)される可能性があります。

Logify-Unity はリフレクションを使用して Attribute を検知するため、ストリッピングの対象になるとデバッグメニューに表示されません。この問題が発生した場合、Attribute を付与したメンバに [Preserve] 属性を併記してください。

using UnityEngine.Scripting; // Preserve属性に必要
using Logify;

public class PlayerDebug : MonoBehaviour
{
[LogiButton("Level Up")]
[Preserve] // ストリッピング対策
void LevelUp()
{
// ...
}
}
一括対策

個別に [Preserve] を付けるのが手間な場合は、link.xml ファイルを作成し、特定のクラスや名前空間をまとめてストリッピングの対象外に設定することをお勧めします。

link.xmlの設定例を表示
<linker>
<assembly fullname="Logify" preserve="all"/>

<assembly fullname="YourGame.Scripts">

<namespace fullname="YourGame.Debug" preserve="all"/>

<type fullname="YourGame.Managers.PlayerManager" preserve="nothing">
<method signature="System.Void LevelUp()"/>
<method signature="System.Void AddItem(System.Int32,System.String)"/>
</type>
</assembly>

<assembly fullname="UnityEngine.CoreModule" preserve="all"/>
</linker>