テラシュールブログ

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

AssetBundle の検索結果:

【Unity】CUIで行こう

…ourcesもしくはAssetBundleから取得する感じになります。 ソースコードを編集しよう 入力補完は甘え。 男は黙って…何使うんでしょうね。vim? あ、外部にC#ライブラリプロジェクト作って(unityengine.dll参照して)assets以下にビルドするのは有りだと思います。 まぁ、基本的にMonobehaviourは1個で、そこに処理を追加する流れになりそうです。(自分の場合はMainコンポーネント一つだけ)画像の表現等はGraphics系命令で何とか。アニ…

【Unity】ゲームに最初から含めるアセット群を圧縮するオプション

…dJKfu4 — 椿 (@tsubaki_t1) 2017年3月22日 ただし、アプリをインストール後は話は別です。Androidは対して変わらないのですが、iOSの場合インストール後にファイルを解凍します。そのためiOSはアプリインストール後にファイルサイズが跳ね上がる訳ですが、圧縮オプションではその辺りをかなり緩和してくれます。 感想 Resourcesを使わない理由がまた一つ減った感 関連 AssetBundleに格納してみた的な tsubakit1.hateblo.j

【Unity】Video Playerでアルファチャンネル付きムービーを使う

…RLから取得ではなくAssetBundleから取得してストリーム再生した方が色々と楽そうに見えます。 アルファチャンネル付きムービーをサクっと試す アルファチャンネル付きムービーの動作をサクっと確認します。 Video Playerを用意 SourceをURLに変更 URLの接続先は「http://tsubakit1.sakura.ne.jp/temp/unity_B.webm」とする。 Render ModeはCamera Back Plane(指定カメラの一番奥) Cam…

【Unity】Timelineで字幕を表示する

…ResourcesやAssetBundleに格納しておき、特定のイベント発行時(ドアを開いたり宝箱を開くカットシーン)にロードする…といった事も出来そうです。 ちなみに現在(Unity 5.6 b6 Timeline用Experimental Build)のメモリ管理周りがかなり雑になっているらしく、Timeline関連のアセットのアンロードや読込等の処理や、アセットの開放漏れでエディタが簡単に強制終了します。 関連 tsubakit1.hateblo.jp nn-hokus…

【Unity】サクッと適応出来る 綺麗な全部入りイメージエフェクト、 New Post-processing Stack (Pre-Release)

New Post-processing Stackのプレリリース版が公開されたみたいです。 New Post-processing Stack サクっと綺麗にするImageEffectを適応する パフォーマンスと表現も向上 エフェクトの効果はアセット単位で管理出来る コードはオープンソースで公開 使い方 Tips 関連 その他 New Post-processing Stack 新しいImageEffectとして、überなImageEffectを作ったみたいです。 下のフォ…

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

AssetBundleをメインで使用して開発するのは良いのですが、コンテンツを変更するたびにビルドが必要になるので若干面倒くさい所があります。一応、Unity 5からのビルドパイプラインでは、内包するコンテンツに変化がなければ再ビルドしない設計になっていますが、数が数だと非常に時間がかかります。 できればResourcesのように、毎回ビルドせずともロード出来るのが望ましいのです。 なので、今回はAssetBundleの内包するアセットをビルドせずロードする機能を作成してみよ…

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

今回はAssetBundleにSceneを含め、実行時に展開する手法についてメモします。面倒くさいとおもったら、AssetBundle Managerを使うのが良いと思います。 tsubakit1.hateblo.jp AssetBundleにSceneを含める SceneをAssetBundleに含める方法 AssetBundleからSceneをロードする方法 StreamedSceneAssetBundleの判定 依存関係の構築 続く 関連 AssetBundleにSce…

【Unity】アプリに含めるアセットを抑えて、アプリサイズを小さくする

…を抑制する事もある。AssetBundleや全体をDLL化したせいでストリップされ過ぎる事もある) また、.DLLの場合はPlatformの指定にチェックが入っている場合に含まれます。 アプリサイズを減らす為には 上のルールを元に、使用していないアセットをアプリに含まれるのを防ぐのがアプリサイズを減らす上で重要な要素になりそうです。 例えばReference Viewerを使用して、該当のアセットが何故含まれているかを確認したり、AssetCleanerでそもそも使用してない…

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

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

【Unity】ソースコード変更後のコンパイル時間を短く抑える

…dは 【Unity】AssetBundleのManifestファイルに書かれている内容について で紹介した変換を使えば取得出来なくはないですが、手っ取り早いのは指定のコンポーネントをプレハブに設定してfield idとguidを確認する事です。 なおPluginsに移動する手法の場合、その辺りの心配は要りません。 DLLの作り方 以前に書いてますが、改めて書き直しておきます。Monodevelopを使用しています。 メニュー > File > 新規 > ソリューションを選択 …

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

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

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

AssetBundleからアセットを取得する方法について、少し整理します。 AssetBundleからアセットを取得する ファイルパスを指定してAssetBundleからアセットを取得する アセットの中に含まれているアセットを取得する アセットが依存しているアセットを取得する mainAsset 関連 AssetBundleからアセットを取得する 普通にアセット(依存関係なし)を取得する場合、assetbundle.LoadAssetsを使用します。アセットの型は、例えばTe…

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

…るProjectにてAssetBundleを構築するとどうなるのか」についてです 別のプロジェクトで作ったAssetBundleは読める 複数のプロジェクト間で作成したAssetBundleの依存関係 確認方法 プロジェクト2の作業 プロジェクト1の作業 プロジェクト2とプロジェクト1が作成したAssetBundleを読む スクリプトもGUIDで依存関係を構築 注意点 関連 別のプロジェクトで作ったAssetBundleは読める まず別のプロジェクトで作成したAssetBun…

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

AssetBundleにシェーダーを格納し常にロードしておく事で、シェーダーのコンパイルやGPU転送コスト、それにシェーダーのメモリ消費を回避出来ます。特にシェーダーのコンパイル・GPU転送等は地味に馬鹿にならないコストを要求するので、出来れば積極的に排除したい要因の一つです。 ただこの方法は1点問題があったので、その問題と回避方法について紹介します。 発生する問題 問題の原因 解決方法 関連 発生する問題 例えば下の画像は、Resourcesから取得した場合と、Assetb…

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

AssetBundleのVariantを使用して、ローカライズ的な事を行うアプローチについてです。今までは少し面倒なバグのせいで紹介するのを避けてきましたが、Unity 5.4bの何処かのバージョンでバグが治ったので、使えるようになりました。 Variantでローカライズ テクスチャやアセットの差し替え(下準備) AssetBundleの読込 ScriptableObjectでテキストデータの差し替え Prefabの差し替えでレイアウト破綻を回避 Resourcesのようにス…

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

AssetBundleにて「AssetBundle一つにつきPrefabを一つ格納」といった感じで設計している場合、一見Prefabのアセットのみが格納されているように見えますが、実際は「Prefabが参照しているすべてのアセット」が含まれます。 といった内容が以前書いた【Unity】ファイルサイズとメモリ消費を無意味に増やさない為の、AssetBundleと依存関係についてのメモ の内容ですが、追うのが正直面倒くさいので簡単に追う機能を試作しました。 AssetBundle…

【Unity】AnimationControllerがプロジェクトを散らかさない設計についての模索とサンプル

…ッチ、1Asset1AssetBundle等が事例があるので今更です。 Unityの機能を素直に使った場合のStyle1ですが、コンテンツ量産型ゲームでは相性が悪いので、もう少し色々と模索したい所です。 個人的には、基本的にはStyle2で行い、特殊な状況でStyle4かStyle5を利用する感じが良さそうなきがしますが、どうでしょう。 関連 tsubakit1.hateblo.jp tsubakit1.hateblo.jp tsubakit1.hateblo.jp tsub…

【Unity】パフォーマンスを得るための16のヒント

…eaming。最近はAssetBundleからも読める) 検索の代わりにHashSetを使用 検索するよりキャッシュを活用 可能であれば複数のカメラは使用しない 何度もメッシュを変形する予定があるならMarkDynamicを使用 動的なメモリ割り当てやGC Allocは避ける。 オブジェクトプーリングを使う AwakeFromLoad(テクスチャロード時等に行うドライバへの転送処理)は高価。 関連 answers.unity3d.com tsubakit1.hateblo.j…

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

…ateblo.jp AssetBundleの依存関係等があり、必ずアセットを含める必要がある場合はアセットをローカルに保持するのが有益かもしれません。 ------------------------------------------------------------- AssetBundleにてリソースを圧縮し、アプリサイズを削減するアプローチについてです。うまく行けばアプリのサイズが非常に小さくなります。 で、このアプローチは実際どうなんでしょう。確認してみました。 …

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

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

【Unity】5.3からのマルチシーン編集を前提として使用する上で注意すべき7つの項目

…ResourcesやAssetBundleからPrefabを取得する場合と異なり、即座にロードが完了する訳ではありません。これは、非同期(Async)ではないSceneManager.LoadSceneを使用した場合も同様です。具体的には、シーンのロードはフレームの最後辺りに実行されるみたいです。 なので、Multi Scene Editingでシーンについて編集する場合、LoadSceneを実行したシーンからロードしたシーンへ参照を行う場合、1フレーム後に行う必要があります…

【Unity】ノベルゲームの立ち絵表現で、キャラクターの表情だけ切り替えて、メモリとロード時間を節約する

…は(LZMA圧縮したAssetBundleとかandroidのresourcesから持ってこない限り)結構高速で読めるし、メモリも(コンソールと違って)潤沢にあるので最悪コレでも良いのですが、もう少し何とかしたい気持ちもあるので、何とかしてみます。 表情だけを切り替えるアプローチ 表情をくり抜く 透明の対策 顔の部分だけ差し替える 解像度を下げて更に負荷ダウン 感想 関連 表情だけを切り替えるアプローチ 今回のユニティちゃんの立ち絵は、基本的に表情しか変化していない立ち絵です…

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

AssetBundle関連を使用する上で便利な上位層APIとして、AssetBundle ManagerがAssetStoreで公開されています。これが思ってたより便利だったので、改めて紹介します。 AssetBundleを簡単に使う為のAsset Bundle Manager AssetBundleを構築する ローカルサーバーを構築してAssetBundleを配置する AssetBundleを構築せず動作をシミュレート 同一のAssetBundleを呼んでもOK 依存関係を…

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

今回はAssetBundleとAssetBundleの依存関係についてです。これについては、AssetBundleを使うなら最低限知っといた方が良いかもしれません。 AssetBundleとアセットの依存関係 複数のAssetBundleから特定のアセットを参照する場合 リソースは別のAssetBundleに格納して、それを読む 依存関係のあるAssetBundleを作る 依存先のAssetBundleは差し替えられる 依存関係のあるAssetBundleをロードする際の注意…

【Unity】ゲーム内で何がどの程度メモリを消費しているのか確認する MemoryProfiler

…中身を知りたい(特にAssetBundleからテクスチャをロードしたりして運用する周りで四苦八苦してる人)は採用してみると便利かもしれません。 Unity-Technologies / MemoryProfiler / Pull request #7: show texture image and information( Editor only ) — Bitbucket プルリク通ってたみたいなので、最新版に反映されてると思います。 関連 Unity-Technologi…

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

…nity5.3になりAssetBundleが変わりました。で、AssetBundleのパフォーマンスについても大分変化したので、そこについて検証してみようと思います。 AssetBundleの新しい設定LZ4 検証方法について 結果。無圧縮でかい、LZMA遅い、LZ4はその間 キャッシュとLZ4変換について 感想 関連情報 AssetBundleの新しい設定LZ4 Unity 5.3より今までの圧縮(LZMA)と非圧縮に加えて「LZ4」が追加されました。 tsubakit1.…

【Unity】SpritePackerとResourcesについて

…itepackerとAssetBundleについて書きましたが、今日はSpritePackerとResourcesについて書こうと思います。 tsubakit1.hateblo.jp SpritePackerとResourcesについて ResourcesからSpritepackerのテクスチャアトラスを使う 関連 SpritePackerとResourcesについて 昨日の記事にてSpritePackerはResourcesに対応していないと書きましたが、これは少し誤りがあ…

【Unity】SpritePackerとAssetBundleについて

…itePackerとAssetBundleの挙動について少しメモします。 SpritePackerとAssetBundleといふ便利機能 SpritePackerでパックしたテクスチャアトラスはAssetBundleに自動的に組み込まれる SpritePackerでパックしたテクスチャアトラスの部分組込は出来ない AssetBundleの依存関係を構築しない場合、2重にテクスチャが読まれる事がある Spriteシェーダーを使用したマテリアルを用意する 関連 SpritePac…

【Unity】1GB近かったPC向けゲームのアプリサイズを18MBぐらいまで縮めた話

…える必要があります。AssetBundleに圧縮してローカルから読むとか。フルカラー使えるメモリ的な余裕があるならJPEGとかPNGも使えますが 透明を持つスプライトをパックでまとめる もう一つのアプローチはスプライトの透明な部分を省くアプローチです。座標の調整を簡単にするためにUIに透明を持たせたままにするのは良くやる手法ですが、これを行うと透明な部分が無駄です。 なので、透明な部分を切り取りスプライトをパックしてしまいます。やり方は単純で、スプライトをSpritePack…

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

…回はUnity 5でAssetBundle周りがどう変わったのか、Unity 5.3からどう変わったのかについて書いていこうと思います。 Unity 5.3のAssetBundleの作成 Unity 5.3のAssetBundleの読込 AssetBundle.LoadFromFileが圧縮したAssetBundleに対応 チャンクベースのAssetBundle キャッシュについて AssetBundleを読み込むAPIの挙動の違い 依存関係の解決について 依存関係の自動解決…