「Unity/AssetBundle/AssetBundle作り方」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→削除は以下の通り) |
(→=) |
||
(同じ利用者による、間の6版が非表示) | |||
行6: | 行6: | ||
公式:https://docs.unity3d.com/jp/460/ScriptReference/BuildPipeline.BuildAssetBundle.html | 公式:https://docs.unity3d.com/jp/460/ScriptReference/BuildPipeline.BuildAssetBundle.html | ||
− | Assets/Editor/ExportAssetBundles.cs | + | Assets/Scripts/Editor/ExportAssetBundles.cs |
<pre> | <pre> | ||
using System.Collections; | using System.Collections; | ||
行34: | 行34: | ||
ArgumentException: The output path "AssetBundleExport" doesn't exist | ArgumentException: The output path "AssetBundleExport" doesn't exist | ||
出力ディレクトリを、予め作っておく。 | 出力ディレクトリを、予め作っておく。 | ||
+ | |||
+ | ===コマンド実行で、Exceptionを吐く=== | ||
+ | dirが無いとか、かもしれないので確認。 | ||
+ | <pre> | ||
+ | Aborting batchmode due to failure: | ||
+ | executeMethod method ExportAssetBundles. ExportResource threw exception. | ||
+ | </pre> | ||
===Unrecognized assets cannot エラーが出る場合=== | ===Unrecognized assets cannot エラーが出る場合=== | ||
行41: | 行48: | ||
==Dir内のファイルを削除したいときは以下実行== | ==Dir内のファイルを削除したいときは以下実行== | ||
− | FileUtil.DeleteDirFile(""); | + | FileUtil.DeleteDirFile("AssetBundleExport"); |
+ | |||
+ | FileUtil.cs | ||
<pre> | <pre> | ||
using System.IO; | using System.IO; | ||
public class FileUtil | public class FileUtil | ||
{ | { | ||
− | public static void DeleteDirFile(string | + | public static void DeleteDirFile(string dirPath) |
{ | { | ||
− | if (!Directory.Exists( | + | if (!Directory.Exists(dirPath)) |
{ | { | ||
return; | return; | ||
} | } | ||
− | string[] filePaths = Directory.GetFiles( | + | string[] filePaths = Directory.GetFiles(dirPath); |
foreach (string filePath in filePaths) | foreach (string filePath in filePaths) | ||
{ | { | ||
行58: | 行67: | ||
File.Delete(filePath); | File.Delete(filePath); | ||
} | } | ||
− | string[] | + | string[] dirPaths = Directory.GetDirectories(dirPath); |
− | foreach (string | + | foreach (string path in dirPaths) |
{ | { | ||
− | DeleteDirFile( | + | DeleteDirFile(path); |
} | } | ||
} | } |
2021年8月28日 (土) 01:40時点における最新版
目次
スクリプトでのAssetBundleの作り方
- 適当なファイル(例:user.csv)を作る
- "user.csv"のファイルを選択し、inspector下のAssetBundleに"user.csv"を入れる。
UnityEditorでビルド実行
公式:https://docs.unity3d.com/jp/460/ScriptReference/BuildPipeline.BuildAssetBundle.html
Assets/Scripts/Editor/ExportAssetBundles.cs
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; public class ExportAssetBundles { [MenuItem("Tools/Build AssetBundle")] static void ExportResource() { BuildPipeline.BuildAssetBundles( "AssetBundleExport", BuildAssetBundleOptions.None, BuildTarget.WebGL ); } }
- AssetBundleExportのディレクトリを作成しておく
- Unityメインメニュー/Tools/Build AssetBundleを実行
- AssetBundleExportの下にファイル(例:user、user.manifest)が出来る
doesn't existエラーが出るとき
以下のようなエラーが出るとき
ArgumentException: The output path "AssetBundleExport" doesn't exist
出力ディレクトリを、予め作っておく。
コマンド実行で、Exceptionを吐く
dirが無いとか、かもしれないので確認。
Aborting batchmode due to failure: executeMethod method ExportAssetBundles. ExportResource threw exception.
Unrecognized assets cannot エラーが出る場合
以下エラーが出る
Unrecognized assets cannot be included in AssetBundles: "Assets/user".
追加したファイルに拡張子が、ないかもしれないので、拡張子をつける。userだったら、user.csvとかuser.txtとか
Dir内のファイルを削除したいときは以下実行
FileUtil.DeleteDirFile("AssetBundleExport");
FileUtil.cs
using System.IO; public class FileUtil { public static void DeleteDirFile(string dirPath) { if (!Directory.Exists(dirPath)) { return; } string[] filePaths = Directory.GetFiles(dirPath); foreach (string filePath in filePaths) { File.SetAttributes(filePath, FileAttributes.Normal); File.Delete(filePath); } string[] dirPaths = Directory.GetDirectories(dirPath); foreach (string path in dirPaths) { DeleteDirFile(path); } } }
参考:https://kan-kikuchi.hatenablog.com/entry/DirectoryProcessor