読者です 読者をやめる 読者になる 読者になる

テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

AssetBundle

【Unity】AssetBundleに格納したSceneやPrefabがピンクになる問題

AssetBundleにモデルを格納した時、モデルのマテリアルがユニークなシェーダーを使用しているとモデルがピンクになる事があります。 今回はその原因と対策についてです。 モデルがピンクになるという事 AssetBundleに格納したSceneやModelがピンクになる 問…

【Unity】ノードベースでAssetBundleを作成するツール AssetBundleGraphTool が予想以上に高機能

今回はAssetBundleをグラフィカルに生成するAssetBundleGraphToolについて紹介します。 AssetBundleGraphTool 入手 基本は絞込と構築、あと生成 アセットの絞り込み グルーピングで、条件毎にAssetBundleのグループを構築 AssetBundleの設定と生成と AssetBu…

【Unity】AssetBundle シミュレーターの作り方について

AssetBundleをメインで使用して開発するのは良いのですが、コンテンツを変更するたびにビルドが必要になるので若干面倒くさい所があります。一応、Unity 5からのビルドパイプラインでは、内包するコンテンツに変化がなければ再ビルドしない設計になっていま…

【Unity】SceneをAssetBundleに格納して実行時にロードする方法について

今回はAssetBundleにSceneを含め、実行時に展開する手法についてメモします。面倒くさいとおもったら、AssetBundle Managerを使うのが良いと思います。 tsubakit1.hateblo.jp AssetBundleにSceneを含める SceneをAssetBundleに含める方法 AssetBundleからSce…

【Unity】別AssetBundleへ分割したモデルが、分離されず元シーンに残ってるケースについて

AssetBundleにて依存先と依存元を分割すれば、ロード時間やアセットのメモリ使用量等を上手く節約出来ます。 ただ、このアセットの分割でえすが分割されないケースがあります。 AssetBundleを分割する AssetBundleが分割されないケース BatchingStaticしたメ…

【Unity】AssetBundleのManifestファイルに書かれている内容について

Unity5でAssetBundleを作成する際Manifestファイルが作成されるようになりました。 今回は、このManifestファイルは何というお話。 ManifestファイルはAssetBundleの構成情報が記述されている 生成したパスと同名のManifestにはAssetBundle同士の依存関係を…

【Unity】AssetBundleからアセットを取得する4つの方法

AssetBundleからアセットを取得する方法について、少し整理します。 AssetBundleからアセットを取得する ファイルパスを指定してAssetBundleからアセットを取得する アセットの中に含まれているアセットを取得する アセットが依存しているアセットを取得する…

【Unity】異なるプロジェクトでAssetbundleを構築する際の注意点

今回は「異なるProjectにてAssetBundleを構築するとどうなるのか」についてです 別のプロジェクトで作ったAssetBundleは読める 複数のプロジェクト間で作成したAssetBundleの依存関係 確認方法 プロジェクト2の作業 プロジェクト1の作業 プロジェクト2と…

【Unity】StandardShaderをAssetbundleに格納した際にNormalやAlphaが動作しない問題の回避方法

AssetBundleにシェーダーを格納し常にロードしておく事で、シェーダーのコンパイルやGPU転送コスト、それにシェーダーのメモリ消費を回避出来ます。特にシェーダーのコンパイル・GPU転送等は地味に馬鹿にならないコストを要求するので、出来れば積極的に排除…

【Unity】AssetBundleのVariantでローカライズ

AssetBundleのVariantを使用して、ローカライズ的な事を行うアプローチについてです。今までは少し面倒なバグのせいで紹介するのを避けてきましたが、Unity 5.4bの何処かのバージョンでバグが治ったので、使えるようになりました。 Variantでローカライズ テ…

【Unity】複数のAssetBundleから参照されるアセットを見つけ出す

AssetBundleにて「AssetBundle一つにつきPrefabを一つ格納」といった感じで設計している場合、一見Prefabのアセットのみが格納されているように見えますが、実際は「Prefabが参照しているすべてのアセット」が含まれます。 といった内容が以前書いた【Unity…

【Unity】AssetBundleを利用してアプリサイズを削減するアプローチ

AssetBundleにてリソースを圧縮し、アプリサイズを削減するアプローチについてです。うまく行けばアプリのサイズが非常に小さくなります。 で、このアプローチは実際どうなんでしょう。確認してみました。 Resourcesに格納したアセット AssetBundleに格納す…

【Unity】AssetBundleのVariantsでロードするアセットを差し替える

今回はAssetBundleのVariantsで、リソースを差し替えてみます。 シーン/プレハブが参照するアセットを差し替えるVariants Variantsを使用してみる 実際にVariantsを使用してみる プレハブの作成 Variantの設定 AssetBundleを読み込む 注意点 AssetBundleMana…

【Unity】AssetBundle Managerが思ってたより凄く便利

AssetBundle関連を使用する上で便利な上位層APIとして、AssetBundle ManagerがAssetStoreで公開されています。これが思ってたより便利だったので、改めて紹介します。 AssetBundleを簡単に使う為のAsset Bundle Manager AssetBundleを構築する ローカルサー…

【Unity】ファイルサイズとメモリ消費を無意味に増やさない為の、AssetBundleと依存関係についてのメモ

今回はAssetBundleとAssetBundleの依存関係についてです。これについては、AssetBundleを使うなら最低限知っといた方が良いかもしれません。 AssetBundleとアセットの依存関係 複数のAssetBundleから特定のアセットを参照する場合 リソースは別のAssetBundle…

【Unity】5.3以降AssetBundleの各種圧縮形式のパフォーマンス比較

Unity5.3になりAssetBundleが変わりました。で、AssetBundleのパフォーマンスについても大分変化したので、そこについて検証してみようと思います。 AssetBundleの新しい設定LZ4 検証方法について 結果。無圧縮でかい、LZMA遅い、LZ4はその間 キャッシュとLZ…

【Unity】SpritePackerとAssetBundleについて

今回はSpritePackerとAssetBundleの挙動について少しメモします。 SpritePackerとAssetBundleといふ便利機能 SpritePackerでパックしたテクスチャアトラスはAssetBundleに自動的に組み込まれる SpritePackerでパックしたテクスチャアトラスの部分組込は出来…

【Unity】Unity 5.3からAssetBundleはどう変わるのか…まとめ

この記事は Unity 2 Advent Calendar 2015 の16日目の記事です。14日めはookumaneko_XDさんでUnityで学ぶシーングラフ入門の入門モドキです。 今回はUnity 5でAssetBundle周りがどう変わったのか、Unity 5.3からどう変わったのかについて書いていこうと思い…

【Unity】AssetBundleからMultiple Spriteに含まれるスプライトを取得する方法とその周辺

今回はAssetBundleの中に格納したMultiple Spriteから特定のスプライトを取得する方法と、その挙動についてです。 Multiple Spriteの取得方法について AssetBundle.LoadAllAssetsでは駄目 AssetBundle.LoadAssetWithSubAssets 不要なスプライトの破棄 特定の…

【Unity】AssetBundleManagerで「AssetBundleからSceneをロード」する

今回はAssetBundleにSceneを格納し、ロードする手法について紹介します。 上手く使うと、ステージの読み込みやローカライズしたUIの表示等に使えそうです。 目次 目次 AssetBundleの新しいサンプル、AssetBundleManager AssetBundleManagerを構築はフォルダ…

UNITY5の地味だけど現場で 役に立つ新機能紹介 & 拡充されるクラウドサービス(あとサヨナラ配管工おじさん)

UNITY5の地味だけど現場で 役に立つ新機能紹介 & 拡充されるクラウドサービス from MakotoItoh UNITY5の地味だけど現場で 役に立つ新機能紹介 & 拡充されるクラウドサービス 新しいAssetbundleとか、フレームデバッガについて書かれてます。 あとWebサービス…

ビルド後のiPhone/Androidゲームにステージを追加する簡単な方法

意外と知られていないTips。実はBuildStreamedSceneAssetBundleを使えば、AssetBundleをシーン単位で構築することが出来る。これで構築したAssetBundleを読み込んだ後は、LoadLevelやLoadLevelAditiveでダウンロードしてきたシーンを読み込める。BuildPipeli…

Unityでテクスチャを読む7つの方法 4・5・6について

[Unity]Unityでテクスチャを読む7つの方法 の4,5,6について。1. モデルのマテリアルにTextureを貼っつけてシーンに配置 2. Resourcesにファイルを配置し、Resources.Load 3. AssetBundleにテクスチャを格納し、bundle.Load 4. WWWからテクスチャをダウンロー…

Unityでテクスチャを読む7つの方法

Unityでテクスチャを読む方法は実は複数ある。代表的なのが、モデルにテクスチャを参照しているマテリアルを登録する方法。これで、読むことを意識せず勝手にTexture2Dを読んでくれる。ただ、状況によって(特にGUIゲーム)ランタイムで読み込みたい場合も多…

AssetBundle と TextureCompression のおはなし

基本的な、でも大事な話。 AssetBundle と TextureCompression のおはなし from Tetsuya Mori そういえばNGUIのAtlasって参照があるから、Assetbundleから差し替えようと思えば差替えられるのか。(テクスチャを直接差替えてた) 関係資料 [Unity]iOS/Androi…

AssetBundleとシェーダー、ロードが遅い場合の対策

またまた素晴らしい資料が公開されてた。アセットバンドルとシェーダー内容はAssetBundleを使用した際に非常に大きなローディングがかかる場合の原因と対策。大雑把に言えばこんな感じ。シェーダーのビルドはランタイム。しかも重い。 (シェーダーのビルド…

プラットフォーム切替時にbundleIdentifierを変更する

プラットフォームが切り替わった際にbundleIdentifierを差し替えるサンプル。やってる事は簡単で、[InitializeOnLoad]で自動的にインスタンス化する現在のプラットフォームを確認してbundleIdentifierを変える処理を定義EditorUserBuildSettings.activeBuild…

アプリサイズを減らす その3

アプリサイズを減らす その2で紹介した方法(StreamingAssetsに配置する)だが、どうやらAndroidでは若干安定度に難がある。で、もう少し良い方法を思いついた。[Unity3D]iosアプリサイズを節約する http://tsubakit1.hateblo.jp/entry/20120512/1336773155…

AssetBundleをローカルに保存してロードする

assetbundle_test https://github.com/tsubaki/assetbundle_test/tree/master/Assets AssetBundleのファイルをダウンロードしてきてファイルを更新するデモ。 Load1とLoad2でファイルをダウンロードして更新、Load Textureでファイルをロードするだけ。 Load…

ダウンロードしたAssetbundleが更新されない場合の対処

Web上のAssetBundle(.unity3dファイル)を更新しても、ダウンロード時にAssetBundleが更新されていない場合がある。これはOSもしくはサーバー側にキャッシュが残っている為で、キャッシュがある限り高速化の為キャッシュからファイルを取得しようとしてしま…

同じリソースから作成されるAssetBundleを毎回同じバイナリになるようにする方法

ちょっとリクエストされたので、AssetBundleに関するトピック。同じリソースから作成されるAssetBundleを毎回同じバイナリになるようにする方法について。 ジェンキンス等でAssetBundle作ってる場合は有効かもしれない。大体以下の設定で作ったAssetBundleは…

AssetBundleの管理について

前回の続き tsubakit1.hateblo.jp先日AssetBundleのキャッシュは150日しか維持出来ない事を書いた所、何やら反応があったので少し補足しておこうと思う。ちなみにキャッシュが消される原因はコレ。Caching.expirationDelay http://docs.unity3d.com/Document…

テクスチャの暗号化

テクスチャの暗号化について、面白いアプローチがあったので紹介。これは、適当なテクスチャに難読化処理をかけたもの。左がエンコードした画像、右がデコードした画像になる。単純にカードを隠したい場合にはそれ程有効ではないが、カードの絵柄を隠したい…

Uniteセッション「ネイティブアプリ時代の ローカルデータ管理入門」の補足

先日自分が担当したUniteのセッション「ローカルデータ管理入門」について、上手く説明出来なかったと思うので補足しておこうと思う。「webデータを取得しよう」の補足この部分は、単純にjsonを使うのを止めて欲しかった。 理由は単純で、実行速度・消費メモ…

Basic環境でもDLCしたい(使い方)

この記事は以前紹介したDLCをBasic環境でも使えるようにするための機能について。 tsubakit1.hateblo.jpパッケージ https://dl.dropbox.com/u/56297224/UnitySumple2/download%20assets.unitypackage今回は使い方について。■プレハブの準備まずはダウンロー…

Basic環境でもDLCしたい

これは簡単に言えば、サーバーからダウンロードしたファイルをキャッシュし、以降はそのファイルを使うといった操作を簡単に行えるようにした物。 要するにダウンロードコンテンツ。 一度キャッシュしたものは、以降はオフラインで使用できるパッケージ http…