FC2ブログ
06 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.» 08

ハルシオンシステムの気ままBlog

株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

 

【ハルシオンブログ】Unityのバージョン変えたらデータのSerialize後にDesirializeができなくなった!そんな時の解決方法の一つ。 

こんにちは、坂内です。

みなさんご自分のアプリは64対応してますか?

うちのポケガはしていませんでした。

ってことで、64対応をしようとしたままドはまり中です。

まぁ その中で1点Serialize、Desirializeについて分かったことをご報告。


現在ポケットガールにて、保存するデータをシリアライズしてPlayerPrefabに保存とかしてます。
もちろんロード時にはデシリアライズしてます。

簡単にかつ「64ビット対応するなら新しいUnityにしちゃえ」ってことで、Unity2017⇒Unity2019を試していたら、起動時に以下のようなエラーが出て動かなくなりました。


SerializationException: The keys for this dictionary are missing.
System.Collections.Generic.Dictionary`2[TKey,TValue].OnDeserialization (System.Object sender) (at <1f0c1ef1ad524c38bbc5536809c46b48>:0)
System.Runtime.Serialization.ObjectManager.RaiseDeserializationEvent () (at <1f0c1ef1ad524c38bbc5536809c46b48>:0)
System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize (System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Runtime.Serialization.Formatters.Binary.__BinaryParser serParser, System.Boolean fCheck, System.Boolean isCrossAppDomain, System.Runtime.Remoting.Messaging.IMethodCallMessage methodCallMessage) (at <1f0c1ef1ad524c38bbc5536809c46b48>:0)
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Boolean fCheck, System.Boolean isCrossAppDomain, System.Runtime.Remoting.Messaging.IMethodCallMessage methodCallMessage) (at <1f0c1ef1ad524c38bbc5536809c46b48>:0)
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Boolean fCheck, System.Runtime.Remoting.Messaging.IMethodCallMessage methodCallMessage) (at <1f0c1ef1ad524c38bbc5536809c46b48>:0)
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Boolean fCheck) (at <1f0c1ef1ad524c38bbc5536809c46b48>:0)
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler) (at <1f0c1ef1ad524c38bbc5536809c46b48>:0)
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream) (at <1f0c1ef1ad524c38bbc5536809c46b48>:0)
XXXXXXXXXXX.Load[T] (System.String prefKey) (at Assets/Scripts/DATA/XXXXXXXXXXX.cs:38)
XXXXXXXXXXX.load () (at Assets/Scripts/DATA/XXXXXXXXXXX.cs:73)
YYYYYYYYYY.Load () (at Assets/Scripts/DATA/YYYYYYYYYY.cs:220)
ZZZZZZZZZZZZ.Start () (at Assets/Scripts/TITLE/ZZZZZZZZZZZZ.cs:38)


え?ロードできない?

Unity2017でゲーム内保存⇒Unity2017でロード 〇
Unity2019でゲーム内保存⇒Unity2019でロード 〇
Unity2017でゲーム内保存⇒Unity2019でロード ×
Unity2019でゲーム内保存⇒Unity2017でロード ×

えーーーー!うっそでしょー!

バージョン変えたからって、ロードできなくなるなんて今までなかったよ!?

めっちゃ調べた結果、海外のフォーラム(どこか忘れた)で、以下のようなやり取りがあった。

「Script Runtime Version同じか?それが違うとシリアライズデシリアライズあわねえよ」

まじかー!!!

ってことで確認。

Unity2017 .NET 3.5 Equivalent

Unity2019 .NET 4.x Equivalent


あぁー違う!


ってことで、Unity2019の方を.NET3.5 に変えたらいけたー!!!


なんかRuntimeVersion違うとだめらしいんで、皆さんお気をつけをば!


さて、今日もビルドのトライアルアンドエラーの日々よ。
早く、ビルド作業終わらせたい・・・・あでゅ~ノシ
スポンサーサイト



Category: 開発日記(Unity)

tb 0 : cm 0