Version: 2018.4
言語: 日本語
IMGUI のサポート
ScriptedImporter

ViewData の永続性

ViewData API を使用すると、ドメインの再読み込み後、またはエディターの再起動時に UI 固有の状態データを保持できます。永続的なデータは、各 EditorWindow に格納されます。それぞれの VisualElement には persistenceKey があり、ViewData の永続性を可能にするためにはこれを設定する必要があります。

ここでは、実装されたコントロールと新しいオブジェクトの ViewData 永続性を有効にする方法を説明します。

実装したコントロールでの使用法

要素がすでに永続性をサポートしている場合は、persistenceKey を設定して、データを保存する必要があることをシステムに指示します。persistenceKey は他のビジュアル要素のキーと違い、一意である必要があります。

VisualElement オブジェクトの継承による使用法

新しい VisualElement を作成すると、永続データをサポートすることができます。最初の手順は、要素クラスの 1 つ以上の Serializable クラス内で永続データをカプセル化することです。

[Serializable]
public class ExtraData
{
    public int m_Value = 0;
}
public ExtraData m_ExtraData;

2 番目の手順は、永続データが変更されるたびに SavePersistentData() メソッドを呼び出すことです。これにより、データが正しく保存されます。

public int value
{
    get { return m_Value; }
    set
    {
        // ここに行うことを記述
        SavePersistentData();
    }
}

最後の手順は OnPersistentDataReady() をオーバーライドすることです。

// 永続データ保存場所にアクセスできることを確認したら、
// 実際の最初の作業をここに記述します
protected override void OnPersistentDataReady()
{
    base.OnPersistentDataReady();

    // 必須ではないが、現在の親に基づいて一意のキーを取得します
    // これは、一意の `persistenceKey` を含みます
    var key = GetFullHierarchicalPersistenceKey();

    // 新しい ExtraData オブジェクトを取得、または作成します
    m_ExtraData = GetOrCreatePersistentData<ExtraData>(m_ExtraData, key);
}

上の例では、一意のキーを生成して割り当てる方法も示しています。キーがひとたび割り当てられると、GetOrCreatePersistentData() は、永続状態を持つオブジェクト、またはオブジェクトをそのまま返します。


IMGUI のサポート
ScriptedImporter