Rapilias / documents

Aqualit public documents
MIT License
10 stars 0 forks source link

マスターデータをUIElement化したエディタ拡張+ScriptableAssetかC#Scriptで管理する #76

Closed Rapilias closed 2 years ago

Rapilias commented 2 years ago

概要

Webフロントに投げる想定だったがUIElementが良い感じなのでそちらに寄せる さしあたって各テーブルのViewにあたるものを作成し、ScriptableObjectかC#Scriptのデータを吐き出せるようにする

マスターデータは従来通りmaster memoryに乗っかるため、ランタイムで読むフォーマットに変更はない

Rapilias commented 2 years ago

検証のみに変更 また、UIElementsベースで動作させる方針で進める

Rapilias commented 2 years ago

問題点

SerializedObjectとPlane C# type

UXMLはSerializedObjectのバインディング機能を備えているが、この際にPlane C#な型をそのままSerializedObjectにすることは出来ない。 SerializedObjectを作る際の制約として

というものがある。 間にScriptableObjectをかませることで回避可能だが、このScriptableObjectを作るのも面倒という気持ちもある。

UXMLのプロパティバインディング

SerializedObjectはプロパティをシリアライズする事が出来ず、C# 7.3で追加される[field: SerializedField]によって、BackingFieldをシリアライズ対象にすることで動作する。 ただし、この際のバッキングフィールドの名前は変更できず、Unity2022.1.xβ段階では<{PropertyName}>k__BackingFieldという命名になる。 更に、この命名はUXMLではタグ文字列と混同される関係で入力できないため、.uxmlファイルに直接&lt;itemData&gt; とエスケープされた<>を書きこむ必要がある。

Rapilias commented 2 years ago

UXMLのプロパティバインディング

完全自動化を実現 これ単体で既に十分機能するので検証終了