はじめに
「XAsset」はシンプルなアセットバンドルマネージャです
サンプルシーン
「XAsset」フォルダ内の「test」シーンを開いてゲームを再生すると
アセットバンドルの読み込みのサンプルを確認できます
アセットバンドルの作成
Unity メニューの「Assets>XAsset>Build AssetBundles」を選択すると
アセットバンドルを作成することができます
アセットバンドルは Unity プロジェクト直下の
「AssetBundles」フォルダ内に作成されます
アセットバンドルの構造は「Rules」ファイルで設定します
[BuildAssetsWithFilename] searchPath=Assets/SampleAssets searchPattern=*.prefab searchOption=AllDirectories bundleName= [BuildAssetsWithAssetBundleName] searchPath=Assets/SampleAssets searchPattern=*.png searchOption=AllDirectories bundleName=sprites
上記のような書式で「Rules」ファイルに構造を定義します
エディタでの動作確認
Unity メニューの「Assets>XAsset>Bundle Mode」をオンにすると
エディタ上でアセットバンドルを使用して動作確認できます
オフにすると、アセットバンドルは使用せずに動作確認できます
アセットバンドルを StreamingAssets にコピー
Unity メニューの
「Assets>XAsset>Copy AssetBundles to StreamingAssets」を選択すると
作成したアセットバンドルを「StreamingAssets」フォルダにコピーできます
これにより、ビルド後のゲームでもアセットバンドルを使用できるようになります
アセットバンドルの読み込み
private void Start() { Assets.Initialize(); } private IEnumerator LoadAsset() { var assetPath = "Assets/SampleAssets/MyCube.prefab"; var asset = Assets.Load<GameObject>( assetPath ); if ( asset != null && asset.asset != null ) { var go = GameObject.Instantiate( asset.asset ); GameObject.Destroy( go, 1 ); } asset.Unload(); asset = null; var assetAsync = Assets.LoadAsync<GameObject>( assetPath ); if ( assetAsync != null ) { yield return assetAsync; if ( assetAsync.asset != null ) { var go = GameObject.Instantiate( assetAsync.asset ); GameObject.Destroy( go, 1 ); } assetAsync.Unload(); assetAsync = null; } }
上記のようなコードを記述して
アセットバンドルの読み込みや破棄を行います