プロジェクトにアセット バンドルをロードしています。アセット バンドル内の個々のオブジェクトを反復処理できるように、それらすべてをリストに追加しています。しかし、ロードしたオブジェクトが不要になったときに、そのオブジェクトを削除するのに苦労しています。
私の研究では、Bundle.UnloadAll を知っていますが、読んだことから、不要なバンドル全体が破棄されます。現在、私のコードは次のようになっています。
if(GUI.Button(new Rect(10,130,100,50), "Forward"))
{
if( index > 0 && object_List[index] != null)
{
Destroy((GameObject)object_List[index]);
}
Instantiate((GameObject)object_List[index]);
index ++;
}
このコードは、読み込まれたアセット バンドル オブジェクトを含むリストを反復処理し、リスト内の次のオブジェクトを生成する必要があります。同時に、以前にロードされたものを破棄する必要があります。しかし、このコードを実行すると、次のエラーが発生します。
データの損失を避けるため、アセットを破棄することは許可されていません。本当にアセットを削除したい場合は、DestroyImmediate (theObject, true); を使用します。
したがって、コードをその提案に変更すると、次のエラーが発生します。
MissingReferenceException: タイプ 'GameObject' のオブジェクトは破棄されましたが、まだアクセスしようとしています。スクリプトで null かどうかを確認するか、オブジェクトを破棄しないようにする必要があります。
ただし、私のリストからは何も削除されず、生成された最初のオブジェクトが残っています。
誰かが同様の問題に遭遇したことがありますか? 私がやろうとしていることは可能ですか?
どんな助けでも大歓迎です。