Unity のビルトイン機能の中には自動的にシリアル化を使用するものもあります。以下はその概要です。
詳しくは スクリプトシリアル化 を参照してください。
Unity はシリアル化を使って シーン、アセット、アセットバンドル をコンピューターのハードドライブに (または、ハードドライブから) ロードして保存します。これには、独自のスクリプティング API オブジェクトに格納される MonoBehaviour コンポーネントや スクリプタブルオブジェクト などのデータも含まれます。
エディターの再生モードと編集モードで発生します。
インスペクターウィンドウ でゲームオブジェクトのコンポーネントのフィールドの値を表示/変更するときに、Unity はこのデータをシリアライズしてからインスペクターウィンドウに表示します。フィールドの値を表示しているときは、インスペクターウィンドウは Unity のスクリプティング API と通信しません。スクリプトのプロパティーを利用する場合は、インスペクターウィンドウの値の表示や変更を行う場合、プロパティーのゲッターやセッターはまったく呼び出されません。なぜなら、Unity は直接インスペクターウィンドウのフィールドをシリアライズするからです。
スクリプトを変更して保存すると、Unity は現在ロードされているすべてのスクリプトデータをリロードします。まず、ロードしたすべてのスクリプトにシリアライズ可能な変数すべてを格納し、スクリプトをロードした後にそれらを復元します。 シリアライズ可能でないすべてのデータは、スクリプトのリロード後に失われます。
これは、プロジェクト内のすべてのエディターウィンドウとすべての MonoBehaviour に影響します。Unity でのシリアル化の他のケースとは異なり、private のフィールドは、 ‘SerializeField’ 属性を持たなくても、リロード時にデフォルトでシリアル化されます。
シリアル化では、 プレハブ は 1 つまたは複数の ゲームオブジェクト と コンポーネント のシリアル化されたデータです。プレハブインスタンスには、プレハブソースとその変更のリストの両方への参照が含まれています。変更は、その特定のプレハブインスタンスを作成するために、Unity がプレハブソースに行う必要があるものです。
プレハブインスタンスは、Unity エディターでプロジェクトを編集している間だけ存在します。プロジェクトのビルド中、Unity エディターは、プレハブソースとプレハブインスタンスの変更の 2 つのシリアル化のデータからゲームオブジェクトをインスタンス化します。
プレハブ や ゲームオブジェクト などの シーン に存在するもののために Instantiate を呼び出すとき、Unity エディターはプレハブやゲームオブジェクトをシリアライズします。 これは、ランタイムとエディター、両方で発生します。UnityEngine.Object から派生するものすべてはシリアライズされます。
それから、Unity は新しいオブジェクトを作り、データを新しいゲームオブジェクトにデシリアライズ (つまり読み込み) します。次に、Unity が同じシリアル化コードを異なるバリアントで実行し、他にどの UnityEngine.Objects
が参照されているかを連絡します。すべての参照された UnityEngine.Objects
を検証し、それらがインスタンス化されたデータの一部であるかどうかを確認します。参照がテクスチャのような「外部」の何かを指している場合は、その参照をそのまま保持します。参照が子ゲームオブジェクトのような「内部」の何かを指している場合には、対応するコピーの参照を適用します。
Resource.GarbageCollectSharedAssets()
は、ネイティブの Unity ガベージコレクターで、標準の C# ガベージコレクターとは異なる働きをします。シーンをロードした後に実行され、参照されなくなったオブジェクト (テクスチャなど) を確認して安全にアンロードします。ネイティブ Unity ガベージコレクターは、オブジェクトが外部の UnityEngine.Objects
へのすべての参照を報告するバリエーションでシリアライザーを実行します。このようにして、1 つのシーンで使用されたテクスチャが次のシーンでアンロードされます。
• 2017–05–15 編集レビュー 無しにパブリッシュされたページ
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.