テラシュールブログ

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

AssetBundle の検索結果:

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

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

【Unity】タグやレイヤー表示を階層構造にする

…0 この機能ですが、Unityのエディタで結構使われています。 代表的なものは、MenuItemでしょうか。メニューの階層化においてスラッシュで分割するといった使われ方はよくされます。 またコンテキストメニューだけでなく、AssetBundleのラベル等でもスラッシュで分割することが出来ます。 ちなみに階層化されてないレイヤーやAssetBundleラベルを階層化すると、大抵変な動作するので注意です。またラベル・レイアウト・GameViewのアス比等は階層化出来ませんでした。

【Unity】プロジェクトに不要なアセットをプロジェクトから退避するエディタ拡張を作ってみた

…起動してください。 AssetBundleは見てません。無視リストを作る予定でしたが、現状ついてません。要望があればつけようかなと思います。 次の予定 正直こんな面倒な事しなくとも「参照マップを構築し、ゲームに関係ある変更があったファイルとその関係ファイルのみを抽出しコミット、その後に不要なファイルはバージョン管理を使って破棄」でよくね? って思ってしまったので、多分そっちの方向に進みます。 tsubakit1.hateblo.jp コード解析はUnityのエディタ拡張でやっ…

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

今回はAssetBundleにSceneを格納し、ロードする手法について紹介します。 上手く使うと、ステージの読み込みやローカライズしたUIの表示等に使えそうです。 目次 目次 AssetBundleの新しいサンプル、AssetBundleManager AssetBundleManagerを構築はフォルダかファイルにAssetBundleタグを指定 AssetBundleに保存されているシーンをロードする AssetBundleの依存関係とアセットの重複問題はAssetBu…

【Unity】モバイル向けのライトマップTipsと、ライトマップを動的に更新するHack

…ps ライトマップをAssetBundleから読み込むTisp LightSnapshotに関するTips ベイクしたライトを更新するHack ライトマップを分割するTips LightmapをPrefabに適応するHack 関連 ライトを焼く ライトを焼く基本的なアプローチは下の記事を参考にしてください。 Unity5でライトを焼く - テラシュールブログtsubakit1.hateblo.jp ライトマップを焼く時間を短縮する ライトを焼くのに時間がかかる場合、Light…

【Unity】おなじプロジェクトを複数のエディタで同時に操作する(Windows版)

…UnityエディタでAssetbundleを並列ビルドして時間短縮したり、複数シーンを同時編集したり - テラシュールブログtsubakit1.hateblo.jp 要するに、シンボリックリンクを利用し、一つのプロジェクトを複数のフォルダとUnityに認識させれば良い訳です。 WindowsのUnityのプロジェクト判定はRootフォルダのパスで判断しているらしく、Mac版と異なり親フォルダを変えておけば別プロジェクトと認識します。そのため、以下の手順で作成したプロジェクトは…

プロジェクト内で使用していないアセットを削除するエディタ拡張を試作中

…ですが、悩ましい。 AssetBundleからの参照はまだ考えてませんが、Unity 5の基本ルールに従って作ってるなら割と簡単に作れそう。 UIはもう少ししたら考えます。 unitypackageのアンインストール Unitypackage uninstaller #unity pic.twitter.com/JlQOSawZuE — 椿 (@tsubaki_t1) 2015, 7月 16 それの過程で思いついてやってみたのが、Unitypackageのアンインストールです…

【Unity】AnimatorをAnimationのように使えるよう色々と試行錯誤

…替える事も出来ます。AssetBundleやResourcesから引っ張ってきた奴でもOK。 やった事 やっている事は単純です。 まずAnimationControllerを一つ用意します。アニメーションの種類・数に関わらず一つで十分です。AnimationControllerに一つだけAnimationClipを登録します。このデモの場合は名前をAnimationと設定しています。今回の場合、外部にあると気持ち悪いので格納してしまいます。 UnityのAnimatorCon…

Unity 4 free と比較して Unity5 Personal Editionで出来るようになった事

…アプリサイズの削減やAssetBundle スプライトパッカーが使用可能に プロファイラーの使用 リソースの非同期な読込が可能に キャラクターモデルのIK設定 経路探索AIで段差の対応 その他 画面全体のエフェクトが可能に レンダリング結果にポストエフェクト的に手を加えるImageEffectが使用できるようになりました。光のにじみや、輪郭線の抽出、ブラー、被写体深度、SSAOといった、よりリッチなエフェクトが使用出来ます。 Unity 5 FX and compositio…

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

…ウドサービス 新しいAssetbundleとか、フレームデバッガについて書かれてます。 あとWebサービス。 物理演算のデモは多分こんな感じです。 Gang Beasts Stress Tests (Unity 4 vs Unity 5) - YouTube ちなみにココに書かれてないけど、地味だけど一番有効な機能はProfilerに検索が付いたことだと思う。 後は初期インデント8が4になった事とか、最初から使えるパッケージがSampleAssets準拠になって、配管工オジサ…

複数のUnityエディタを同時に起動して、Assetbundleを並列ビルドしたり、複数シーンを同時編集したりする裏ワザ

…unionfs作戦 AssetBundleを作る Unityエディタが複数同時に起動できない理由 細かい所は置いておいて、Unityがエディタを並列に立ち上げることが出来ないのは、大体LibaryとTempフォルダのせいです。 Temp:エディタ終了時とエディタ開始時に消す短期的フォルダ Library:プラットフォームの変換結果等を格納する長期的なフォルダ このため、単一のプロジェクトフォルダでUnityエディタを複数立ち上げると、TempフォルダやLibraryフォルダへ…

Resourcesから非同期でインスタンス化する

Unity 2018系はこちら tsubakit1.hateblo.jp --- Unity 4.5.3よりResources.LoadAsyncが追加されました。これは今までResources.Load時に停止させていた時間を停止させず、非同期でロードする命令です。 しかし、実際にコレを扱ってみて失望するかもしれません。理由は簡単で、非同期で読んでいるハズなのに停止するからです。 非同期で読んでいるハズなのに固まってしまう。答えは簡単です、こういった停止の概ねの原因はRes…

ScriptableObjectについて

… なおデータの更新はAssetBundleのような物が必要になるので、基本的に更新できるパラメータの場合はScriptableObjectではなく汎用フォーマットの方が向いてます。 またセーブデータのように更新するデータに関しても、実行時は読み取り専用として動作するScriptableObjectよりテキストやバイナリの方が向いています。 ソースコードにハードコーディングする物との違い ソースコードにデータをハードコーディングする事はCやC++では良くある事だし構造的に簡単で…

独断と偏見で選ぶ、Unity 4.5アップデート注目ポイント

…audioとWWW.assetbundleの負荷を修正WWWのメモリリークを修正PLCrashReporterとPhysXとFMODを-mno-thumbでビルドGetComponentsInParent(親からコンポーネント取得)が追加。 親が非activeでも取れるHierarchyビューの項目を自由に並び替えられるようになった。 ソートも可能らしい。ココ独自イベントのUnityActionが追加。多分デリゲートイベントを使うと iOS下でクラッシュする問題の対策。(一昨…

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

…eamedSceneAssetBundleを使えば、AssetBundleをシーン単位で構築することが出来る。これで構築したAssetBundleを読み込んだ後は、LoadLevelやLoadLevelAditiveでダウンロードしてきたシーンを読み込める。BuildPipeline.BuildStreamedSceneAssetBundle下のデモでは、テクスチャもメッシュも、アニメーションすらも入っていないシーンを構築後、ランタイムでシーンを追加して読み込んでいる。 デモ…

4.3リリースノート…を読むのが面倒くさい人向けに重要そうな所をピックアップ

…クリプト周り更新!・AssetBundleのCRCチェックサムを出力するパラメータ追加 ・タイムスタンプではなく、実際に変更のあったファイルのみ再インポート ・メタファイルがデフォルトでONに ・PropertyDrawersがリフレクション機能をサポート(多分fieldInfo) ・フルシーンundo削除 ・EditorGUIUtility.labelWidthとEditorGUIUtility.fieldWidthは廃止。代わりにEditorGUIUtility.Look…

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

…s.Load 3. AssetBundleにテクスチャを格納し、bundle.Load 4. WWWからテクスチャをダウンロードし、www.textureNonReadable 5. WWWからテクスチャをダウンロードし、www.LoadImageIntoTexture 6. IO.Fileでテクスチャのbytesを取得し、texture2d.LoadImage 7. ネイティブプラグインでTextureを作ってTexture2D.CreateExternalTextureと…

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

…s.Load 3. AssetBundleにテクスチャを格納し、bundle.Load 4. WWWからテクスチャをダウンロードし、www.textureNonReadable 5. WWWからテクスチャをダウンロードし、www.LoadImageIntoTexture 6. IO.Fileでテクスチャのbytesを取得し、texture2d.LoadImage 7. ネイティブプラグインでTextureを作ってTexture2D.CreateExternalTextureと…

AssetBundle と TextureCompression のおはなし

…な、でも大事な話。 AssetBundle と TextureCompression のおはなし from Tetsuya Mori そういえばNGUIのAtlasって参照があるから、Assetbundleから差し替えようと思えば差替えられるのか。(テクスチャを直接差替えてた) 関係資料 [Unity]iOS/Androidでテクスチャを利用する(多分)最も良い方法 [Unity]アルファ入りの PVRTC を奇麗にするコツ [Unity][iOS]圧縮画像でメモリを節約&ロ…

iOS/Androidでテクスチャを利用する(多分)最も良い方法

…プリサイズ・ファイルサイズ的には有利だがパフォーマンス・ロード時間的に不利なのでその辺り注意。ちなみに面倒さを無視出来るならば、GPU毎に最適なテクスチャを出力するのがパフォーマンス的には最も良い方法のように思う(概ね4bitで良い表現が出来る)。例えばAssetBundleをGPU毎に用意したり、端末ごとにダウンロードするapkを設定することで実現出来る。(Unityはこれの為にビルド時にテクスチャを設定できるようにしていると思う)でも面倒くさいので誰もやってないっていうね

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

…ルとシェーダー内容はAssetBundleを使用した際に非常に大きなローディングがかかる場合の原因と対策。大雑把に言えばこんな感じ。シェーダーのビルドはランタイム。しかも重い。 (シェーダーのビルドはOpenGLの仕様によるものだった気がする)AssetBundleが異なる場合は同一シェーダーを使ってても別扱い1と2の理由により、AssetBundleからシェーダーごと取得すると時間がかかる対策としては、PushAssetDependencies/PopAssetDepend…

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

…leIdentifierを変える処理を定義EditorUserBuildSettings.activeBuildTargetChangedに2で作った処理を登録これだけ。これだけ見ると単純な処理だけだが、実際色々と応用が効きそうだ。例えばPC向けDLLをPC向けビルド時以外はPluginsフォルダから退避プラットフォーム毎にシェーダーを差し替える構築するシーンを差し替えるAssetBundle甩のURL差替え等々。この手のイベントを使うとクラッシュしやすくなるけど意外と便利。

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

…、Resourcesに配置すればランタイムに読める。その場合も同様にTextAssetsとして取得しTexture2D.LoadImageでテクスチャ化する感じ。一見便利な方法だが、相変わらずメモリ難になる問題は継承している(RGBA32で読込を行うため)。また、ローディングに必要な時間がAssetBundleと比較して約3倍かかるため、AssetBundleが使えるならAssetBundleを使ったほうが幸せになれる…場合もある。(テクスチャのローディング高速化はまた今度)

ゲームをビルドした後でもスクリプト(機能)を追加する

…別な処理する事なく、AssetBundleにプレハブを含めれば読み込める。基本はアセットバンドルへのスクリプトを含めるでやっている事と全く同じ。手順はこんな感じ。 作成手順1.インポートするスクリプトをDLL化し、拡張子をbytesとする 2.AssetBundleに1の手順で作成したbytesファイルを含める読込手順1.WWWクラスでAssetBundleをインスタンス化 2.プレハブからTextAsset形式でbytes化したファイルを取得 3.Assembly.Load…

Unity 4.2.0 公開

…リミティブを追加 ・AssetBundlesのランタイムメモリ消費の削減 ・ネイティブプラグインのAppControllerが名称変更 ・Basicでもシーンをテキストで出力(マージが出来るようになった) ・イメージエフェクトを超高速化 ・OpenGL2.0向けシェーダーを超高速化 ・Shurikenに接触時イベントを登録(火花が当たった時に炎上等) ・ネイティブテクスチャーから直接 Texture2D が作成可能に ・プロファイラのロード済みオブジェクトを参照するオブジェク…

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

assetbundle_test https://github.com/tsubaki/assetbundle_test/tree/master/Assets AssetBundleのファイルをダウンロードしてきてファイルを更新するデモ。 Load1とLoad2でファイルをダウンロードして更新、Load Textureでファイルをロードするだけ。 LoadTextureは単一のURIしか参照していないので、ファイルを更新していることが分かる。ちなみにエラー処理とか入れてないの…

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

Web上のAssetBundle(.unity3dファイル)を更新しても、ダウンロード時にAssetBundleが更新されていない場合がある。これはOSもしくはサーバー側にキャッシュが残っている為で、キャッシュがある限り高速化の為キャッシュからファイルを取得しようとしてしまう。なので再ダウンロードするには、キャッシュを消すか別のアドレスとして認識してもらい再ダウンロードする必要がある。例えばこんな感じ。 これはURLに適当なパラメータを付与してキャッシュを回避しているだけ。ブ…