いんでぃーづスマートフォン用の表示で見るいんでぃーづゲームメインのブレブレブログ。ついて、いろいろ研究してみました。今までいろいろ間違った使い方をしていたことに気づきました。オブジェクトに設定して置く方法。注意したいのは、シーン内に間接的にリンクされたオブジェクトが存在する場合、メモリが確保されてしまうということです。下のような、ScriptableObjectを持ったプレハブをシーン内のオブジェクトにリンクしてしまうとScriptableObjectのメモリが確保され、さらにScriptableObject#Awakeなどのライフサイクル関数も呼ばれます。あらゆるテーブルをScriptableObjectにして、一つのオブジェクトにリンクするようなことはやめておきませう。アセットを置くことで、動的にロードすることができます。読み込むことができます。関数実行時に呼ばれます。必要なタイミングでのみScriptableObjectを参照したい(メモリをなるべく確保したくない)と思ったときに、最終的に行き着くところがコレ。OnEnableなどのライフサイクル系の関数は、初回にLoadしたときのみ呼ばれるところ。メモリも初回Load時のみ確保されていると思われる。ScriptableObject.CreateInstance新しくインスタンスが確保されます。インスタンスが別なので、メモリ領域は別々に確保されます。ScriptableObject.CreateInstance<EnemyDataTable>();プログラムから生成しているので、データのシリアライズなどはできませんので値を初期化する必要があります。↓ScriptableObject.Instantiateこの関数を使えば、インスタンスを新しく確保できます。上記ライフサイクル関数を使いたい場合は有用かもしれません。ライフサイクル関数ScriptableObjectには、MonoBehaviourのStartなどにあたる関数として、AwakeやOnEnableなどがあります。OnEnableこの二つの使い分けがよくわからないので一緒に書いておく。エディタUnity起動後、はじめてプロジェクト内でScriptableObjectを選択してインスペクタに表示したときに呼ばれます。ビルド後ScriptableObjectの参照が発生したときに呼ばれます。OnEnableです。OnDestroyこの二つの使い分けもよくわからないので一緒に書いておく。開放すると呼ばれます。はてなブログProインディーゲーム開発してます。ゲーム開発のことやらUnityまわりのことをつらつらと。当サイトの広告バナー、リンクによって提供される情報、サービス内容について、当サイトは一切の責任を負いません。当サイトの情報を元にユーザ様が不利益を被った場合にも、当サイトは一切の責任を負いません。すべて自己責任でお願いします。スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。