--------(--)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
2013-04-22(Mon)

UNITE 2013 レポート(4)[Unity]

Tokyo, April 15-16

シリアライズに関して、なんかしっくりいく方法が分からないなぁと思っていたので、自分にとっては有益なセッションでした。
時間の経過や、メモが糞だったりで、まとめれるレベルに達していないのですが、中盤までの内容が、既にBlogに記述されていたので、その部分を見ていきます。
http://blogs.unity3d.com/2012/10/25/unity-serialization/
この後、確かCustomAssetUIなんかの話などが続いていました、
そのうちスライドとプロジェクトが公開されると思うので、その時見直します。

■シリアライズ徹底解説(Day1 - Tim Cooper)
シリアライズ可能なclass、assembly reloadでも生き残る
(play modeの出入りでデータが消えないで欲しい)
assembly reloadがいつ発生するのか
- script recompile
- play modeの出入り
- load and saving
上記の例では、実行してassembly reloadすると設定した値が生き残らない。

シリアライズ可能なクラスは、
[Serializable] がマークアップされたclass、public な class
[SerializeField]は、assemblyのreloadまたは類似のイベントで、このフィールドをシリアル化を試みるべきであるとUntyに伝える
構造体のシリアライゼーションはうまくサポートされていないので、classに変更。以下の変更で、実行停止しても値が残るようになる。

Serialization ルール
- 構造体は不可
- シリアライズしたいClass には [Serializable] を付ける
- Public fields は シリアライズされる
- (edior) などの環境の Private fields は シリアライズされる
- private fields で シリアライズを望む場合、[SerializeField]
- シリアライズを望まない場合、[NonSerialized]

ScriptableObjects
plane classを使用することの問題点は、
referenceでなくvalueでシリアライズされる、参照でも個別にシリアル化されてしまう
以下の例では、m_Class1とm_Class2が別々にシリアライズされ、連動しない。

ScriptableObjectで、参照として正しくシリアライズできる
They(ScriptableObject) are great for general data structure serialization.

NestedClass は今、 ScriptableObject
instanceの生成で、コンストラクタを呼び出す代わりに、CreateInstance<>関数を使用している。
hide flagsも設定、これについては後述

ScriptableObjectの初期化
コンストラクタではなく、OnEnableで行う
OnEnableは、serializationの後で呼ばれる(OnEnable/OnDisable)
ScriptableObjectの正しい初期化の例

HideFlag - visivilityのコントロール
カスタムデータ構造体がシーンに保存されないように設定(HideAndDontSave)

Concrete Arrayのserializationサンプル

一般的な配列のシリアライズ
基底クラスと子クラスのメンバが含まれているリストをシリアル化する例に変更
リロードが完了すると、すべてのインスタンスでChildClass情報は取り除いて、BaseClassになってしまう。

ScriptableObjectを使用すると回避できる

Abstract Classのシリアライズ
このコードは前の例のように動作する。しかし危険です。
MyBaseClassのインスタンスを追加することが可能で、抽象メソッドにアクセスする場合、
その関数のない実装が存在しないため、悪いことが起こるでしょう。
空の virtualメソッドを持ったconcreate classの使用するのがと思います。

以上

コメントの投稿

管理者にだけ表示を許可する

コメント

Advertising


カテゴリ
記事一覧
最新記事
最新コメント
最新トラックバック
月別アーカイブ
プロフィール

tasogare66

Author:tasogare66
ひっそり週末プログラム
@tasogare66

【Androidアプリ】


Wipes Arrow
(スワイプアクション)

review site
Uni本
リンク
RSSリンクの表示
FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。