テラシュールブログ

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

AssetBundle の検索結果:

【Unity】AddressableでSprite ModeがMultipleなスプライトを使用する

AddressableでMultiSpriteを使用する方法についてです。 Unity 2019.1 Addressable 0.8.4 preview 追記:1.1.4で問題なく使えるようになりました マルチスプライト AddressableはSubAssetを直接ロード出来ない 解決方法 アイディア1: スプライトを取り出す アイディア2:SpriteAtlasに格納する アイディア3:適当なScriptableObjectに参照させておく 感想 関連 追記:1.1.4で…

【Unity】TextMeshProのテキストに表示するスプライトをAddressableから取得する

…ro はスプライトをAssetBundleから取得してみます。 検証環境 TextMeshProのスプライトをAddressableに格納する TextMeshProのスプライトをテキストに適応する 検証環境 addressable 0.8.6 unity 2019.3.0 a3 TextMeshProのスプライトをAddressableに格納する 下の記事を参考に、テクスチャからSpriteAssetを生成します。 www.snoopopo.com 作成したSpriteAs…

【Unity】AddressableAssetSystemで「PackedPlayMode」と「FastもしくはVirtual Mode」で挙動が違う場合

…on: RemoteAssetBundleProvider 404が出る 複数のPrefabでScriptableObjectを共有してるとき、ScriptableObjectの変更しても反映されない 複数のSceneでScriptableObjectを共有してるとき、ScriptableObjectを変更しても反映されない 感想 関連 Packed Play Mode と Virtual mode / Fast Modeの違い Packed Play Mode と Virt…

【Unity】AddressableAssetSystemでSpriteAtlasを使用する

…は所属するグループやAssetBundleをそれ程意識しなくても利用できるシステムです。ただし暗黙的な参照によるアセットの重複はやはり存在するので、特に何も気にせずアセットを利用すると、アセットが重複する事があります。 例えば下の様に複数のAssetBundleから一つのSpriteAtlasにパックしたアセットへアクセスする場合、複数のAssetBundleにパックしたテクスチャが格納することになり、メモリ効率・データサイズ・描画性能的にペナルティがあります。 実際、Ass…

【Unity】AssetBundleに実際に含まれるアセット一覧を確認する

AssetBundleに含めたアセットやシリアライズしたデータ一覧を確認出来る機能を作ってみました。 AssetBundleに自動で含まれるアセット AssetBundleに含まれるアセットを全て確認する 例 現状の問題 CSVで出力もついてでに作ってみる 感想 関連 AssetBundleに自動で含まれるアセット AssetBundleは、AssetBundle NameやAddressを設定したアセットが参照するアセット…例えばキャラクターにおけるAnimationやMa…

【Unity】AddressableAssetSystemで、他のプロジェクトのAASが作ったAssetBundleを利用する

…ロジェクトが作成したAssetBundleを使用する方法についてです。 内容 Addressableで他のプロジェクトが作成したAssetBundleを使用したい Addressableのビルド用プロジェクトを用意する Addressableでビルド済みAssetBundleを使用する 既存のAddressableを使いつつ、動的にカタログを追加する 感想 関連 内容 AssetBundleを「上書き」する場合は、ContentCatalogを上書きするだけでいい "Asse…

【Unity】AddressableでAssetBundleをビルドすると link.xml も自動で生成される

…dressableでAssetBundleをビルドしている場合、自動的にlink.xmlが生成されます。 Addressableがlink.xmlを生成する link.xmlを作成しているコード 関連 Addressableがlink.xmlを生成する Addressableをビルドする際、StreamingAssetsに幾つかのファイルを自動的に生成します。 Catalog.json Settings.json link.xml このlink.xmlですが、AssetBun…

【Unity】暗号化したAssetBundleはLoadFromStreamでロードすればメモリに優しい

暗号化したAssetBundleを、「メモリに一旦全展開してからの復号」ではなく、メモリ負荷的に優しい「Streamで復号しながら読む」アプローチについてです。 AssetBundleを暗号化でAssetBundle.LoadFromMemoryを使うとメモリに優しくない AssetBundle.LoadStreamで少しずつ復号する 暗号化に対応したStream AssetBundleの構築 暗号化したAssetBundleの利用 感想 関連 AssetBundleを暗号化…

【Unity】Addressableのローカルサーバーを使って、AssetBundleをダウンロードする動作を確認する

…るシステムです。またAssetBundleを構築せず動作を確認出来るという点で非常に手軽に変更を確認出来ます。 とはいえ、AssetBundleを実際にビルドしないと何らかの不具合を確認出来ない事もあります。また、外部リソースにはダウンロードという手順が必ず存在するため、そういった部分の確認にも出来ればアセットを配置するサーバーを立てて実際に確認したい所です。 なので、ローカル環境にサーバーを立てて動作を確認するホスティングサービスの機能を使ってみます。ファイルはサーバー上に…

【Unity】UnityでAlembicを使ってみる

…る事になりますが、逆にAssetBundleを使わず使えるので、利点の一つといえるのかもしれません。 正直、VRは幾つかのインタラクティブ要素を除いたらAlembic等をストリームで流し込む方が理に適ってるんじゃないかなと個人的には思わなくも(モバイルだとIO周りで詰まりそうですが) 関連 Recorderを使用するアプローチ tsubakit1.hateblo.jp tsubakit1.hateblo.jp blogs.unity3d.com www.youtube.com

【Unity】AssetBundleでSpriteAtlasを使用する際に知らないと起こすかもしれないトラブルと、その回避方法

…ite AtlasとAssetBundleの組み合わせで問題が起きるという話を聞いたので、確認してみました。 SpriteAtlasをAssetBundleに格納しただけだと問題が起こる 手っ取り早い解決策:SpriteAtlasに登録したSpriteもAssetBundleに格納 何故そうなるのか? Sprite生成元の画像データでAssetBundleのサイズが膨らむ事は無い(条件有) Spriteの情報が重複するんじゃないの? 結局、どのように使えばよいのか 補足 感想…

【Unity】SpriteAtlasでパッキングしたテクスチャを遅延ロードする

…ンドします。 今回はAssetBundleでSpriteAtlasを配信しようと思うので、AtlasはatlasAssetBundleに格納しています。 暗黙的参照で含まれているように見えますが、ポリゴン情報だけです。 後はSpriteAtlasManager.atlasRequestedでSpriteAtlasのリクエストを検出、そのタイミングでAtlasをロード・差し込みを行えばOKです。 この機能はゲームで一つだけあれば良いので、今回はこの動作をするマネージャーをScr…

【Unity】はじめてのScriptable Build Piepline

…UnityでゲームやAssetBundleをビルドする為のコードを露出したパッケージです。 本来のBuildPipelineは殆どがネイティブコードで動作しており、簡単なオプションの設定等しかできませんでした。 Scriptable Build Pipelineでは殆どのコードが露出しており、どのような設定で構築されるのか確認したり、AssetBundleの構築ルールを独自のルールにカスタマイズするといった事が可能になります。 Scriptable Build Pipelin…

【Unity】AssetBundleからモデルをロードする際の最適化ポイント

…lectionと同じAssetBundleに格納するだけです。 というのも、AssetBundleに暗黙的に格納された(AddressやAssetBundle Nameを指定されていない)アセット群は、基本的にAssetBundle毎に独立した存在とみなされるためです。 AssetBundle Browserで確認すると、同じアセットを参照しているものは警告が出ます。 同じアセットを別のAssetBundleが暗黙的に格納している場合、コンテンツの中身は完全に一致する”だけ”…

【Unity】実践的なパフォーマンス分析と最適化

…いうものです。これをAssetBundleに格納して比較した所、ファイルサイズは大幅に小さくなりました。但しロード時間が劇的に伸びてしまっています。この辺りは現在調査中です(普通に伸びると思うのですが、発表者的には短くなってほしかったのか…?) 感想 来週の月曜日(6/11)から5日間にかけて「1日5時間×5日間連続 全25時間放送」というUniteの動画をチャットしつつみんなで見直そうぜ的なイベントがあるので、先駆けて少し見たセッションを文章にしてみました。 connect…

【Unity】C# Job Systemを自分なりに解説してみる

…ync・Await、AssetBundleの解凍やWebRequestの機能がそうです。非同期処理も並列処理も、コアを使うという点で同じで、非同期処理も並列処理のように組む事は可能です。並列処理も、処理の完了待ちのタイミングを「明らかに完了した場所」に設定しておくことで、非同期処理っぽく出来ます。 特にbig.LITTLEのように、複数コアが偏った性能をしている事もありますし、メインスレッドに仕事が割り振られない事もあります。なので、並列処理ですが非同期的な待機も意識しておく…

【Unity】特別なコードをあまり書かずに "別シーン内のオブジェクト" へアクセスするアイディア

…録が面倒くさい場合 AssetBundleに格納する場合の注意 公開する型を決め打ちして汎用的に使えるようにする ScriptableObject側に動きを定義する 参照先のシーンがロード前の場合 動作の異なるクラスを渡したい場合 感想 関連する内容 実際にやってみる アプローチの内容を詳しく紹介する前に、簡単な物を作ってみます。 今回期待する動作は、以下の通り カメラがプレイヤーを追跡する カメラとプレイヤーは別シーンにあるカメラはCameraシーン、プレイヤーは2Dシーン…

【Unity】パーティクルをGPU Instancingで描画してみる & 対応シェーダーを自作してみる

Unity 2018.1では、Instancing関係の機能が大幅に使い勝手良くなりました。 特にメッシュパーティクルの描画はCPUバッチングではなくGPU Instancingで行えるようになり、幾つかのケースでパフォーマンスが大幅に向上する事があります。 Unity 2018.1 でパーティクルに追加されたenable GPU Instancingを有効にしてみるテスト。無効(今まで通り)だと6~10FPSくらいしか出ないパーティクルの量でも、60FPS余裕で維持できた …

【Unity】Assembly Definition Filesという神機能

…ォルダは無視される AssetBundleからのみ参照されるコードはストリップされやすくなる 循環参照は無理 unity 2017.3はまだテストには対応してないかも 使いすぎに注意 関連 Assembly Definition Filesという神機能 Assembly Definition Filesは、C#のコードが出力するアセンブリを複数のアセンブリに分割するだけの、超地味な機能です。 使い方は単純で Assets > Assembly Definition Files…

【Unity】AssetGraphTool、ノーコーディングで 「指定フォルダにインポートしたアセットの設定を、指定した内容に自動更新する」 機能を作る

…ologies / AssetBundleGraphTool / source / — Bitbucket マニュアル docs.google.com 【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜 from UnityTechnologiesJapan www.slideshare.net 関連情報 Unity 2018.1のPreset AssetGraphToolと異なりオブジェクトに対しても効力を発揮します。…

【Unity】iOSでもETC2が使えるようになった。

…7AQDs8v — 椿 (@tsubaki_t1) 2017年11月21日 ただ解凍は基本CPUっぽいので、ロードが早くなるかは未検証です。 ロードはソコよりResourcesやAssetBundleNameの大量発行でアセットの整列妨害(及びランダムアクセスの増加)が問題じゃないかなと密かに思ってたり。 関連 http://www.binomial.info/ ttps://twitter.com/tsubaki_t1/status/932958718827757568 h

【Unity】AssetBundleをマネージコードのStreamから取得する

…y 2017.2よりAssetBundle.LoadFromStreamとAssetBundle.LoadFromStreamAsyncが追加されました。 これで暗号化したAssetBundleをStreamから読み込んだり、独自圧縮したAssetBundleを読み込んだり…?うーん、出来るのかな サンプルコード 下のようなコードでAssetBundleが取得出来ます。 // gist.github.com まぁコードに関してはスクリプトリファレンスの方が多分ちゃんとしてます…

【Unity】アプリ内課金やAssetBundle、ランキングの例を含むサンプルゲーム、Endless Runner Sample Game

…ameといふゲーム AssetBundleでキャラクター・ステージの切替 Shaderで色々な画面効果 Animatorは割とシンプル その他諸々 感想 関連 Endless Runner Sample Gameといふゲーム Endless Runner Sample Gameは、モバイルで良く見たエンドレスラン系のサンプルみたいです。 ゲームを開始すると、割と良い感じのアニメーション(猫がねずみを追い回す)が始まり、キャラクターセレクトっぽい画面、そしてエンドレスランのゲー…

【Unity】ScriptableObjectを使用した、コンポーネント・シーン間でのデータ共有について

…スタンスは一つ、ただAssetBundleは注意 Find Reference In SceneでScriptableObjectを参照するオブジェクトを見つけ出す エディターでアセットのインスタンスに書き込むと、ファイルも更新される問題 案1:Inspectorで使用する初期値と実際の値を分ける 案2:再生停止時にScriptableObjectをUnloadする ScriptableObjectの保持範囲は、アセットが開放されるまで アセットを勝手に開放させない方法 積極…

【Unity】Unity 2017の新しいスプライトをパッキングする仕組み、”SpriteAtlas”について

…こ注意が必要です。 AssetBundle等にAtlasを含める場合、コチラのほうが運用が楽そうです。 AtlasからSprite名を指定して直接Spriteを取得出来る アセットとしてSpriteAtlasが指定出来る事は、SpriteAtlasからアセットを取り出せる事も意味します。例えば下のように、GetSpriteを指定すると、Atlasに含まれるスプライトが取得出来ます。 namespaceはUnityEngine.U2D。何だこの「U」は…unity…? Incl…

【Unity】Unity 2017 beta が公開。個人的に気になった部分まとめ

…のかは謎ですが、多分AssetBundleで突っ込めって事なんでしょう。もしくは他に何かあるのか。 テクスチャのラッピングモードがUVW独立 UV独立してラップ出来るようになりました。 IL2CPPのビルドサイズが小さく、構築が早く? IL2CPPの構築サイズが小さくなるっぽいです(未検証) またMacでのIL2CPPへの変換効率が倍になるみたいです(未検証) Build Pipeline: Unified assembly stripping code used for I…

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

AssetBundleにモデルを格納した時、モデルのマテリアルがユニークなシェーダーを使用しているとモデルがピンクになる事があります。 今回はその原因と対策についてです。 モデルがピンクになるという事 AssetBundleに格納したSceneやModelがピンクになる 問題の原因は、グラフィックAPIが異なる事 解決方法1:Graphics APIを対象プラットフォームに合わせる 解決法2:Shaderを実行時に差し替える(非推奨) 解決法3:AssetBundleシミュレ…

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

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

【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