こんにちは、現在以下のようなコードをAwakeに書いて、シーンを開いたときにAssetBundleからロードしたオブジェクトを表示するということをしようとしています
C#
1string assetBundlePath = Application.streamingAssetsPath + "/object"; 2assetBundle = AssetBundle.LoadFromFile(assetBundlePath); 3// ここまでは最初に実行するシーンでのみ行う 4// 2019/05/27 修正(シングルトンからのロードでした。お詫びして訂正します) 5GameObject EV = AssetBundleManager.Instance.assetBundle.LoadAsset<GameObject>(パス);
ところが、最初の1回は正常に読まれるのですが、シーンを再度読み直してLoadAssetを実行するとEVがNullになってしまいます
また、呼び出し時のassetBundleはデバッガで見ると「AssetBundleManager.Instance.assetBundle = "object (UnityEngine.AssetBundle)"」となっておりNullではありませんでした
このような現象を回避するためにはどのようにすればよいでしょうか?
<追記>
AssetBundleは以下のコードによるシングルトンです。このクラスをインポートした空オブジェクトを最初に起動されるシーンに配置しています。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class AssetBundleManager : SingletonMonoBehaviour<AssetBundleManager> { /// <summary> /// アセットバンドルのインスタンス /// </summary> public AssetBundle assetBundle; public void Awake() { if (this != Instance) { Destroy(this); return; } DontDestroyOnLoad(this.gameObject); } /// <summary> /// 初回起動時にアセットバンドルを読ませる /// </summary> public void Start() { string assetBundlePath = Application.streamingAssetsPath + "/object"; assetBundle = AssetBundle.LoadFromFile(assetBundlePath); } }
あなたの回答
tips
プレビュー