テラシュールブログ

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

Unity

【Unity】Denoiseを使用してライトマップのベイク時間を劇的に抑える

Unity 2019.1で追加されたDenoiseを使ってみます Denoiseでライトマップのノイズを除去 Optix AI Denoiser 使ってみる 感想 関連 Denoiseでライトマップのノイズを除去 Progressive Lightmapperはレイトレースベースのライトマッパーです。そのサンプリング…

【Unity】LWRPで、壁で遮られて見えないキャラクターをシルエット表示するのが超簡単にできた

壁で遮られて場所が分からないキャラクターのシルエットを表示するアプローチを、LWRPでノーコーディングで実現出来たので紹介します。 壁に隠れてキャラクターが見えない問題 Custom Forward Renderでシルエットを描画してみる 手順1:Custom Forward Rend…

【Unity】新しいステルス系チュートリアル「John Lemon's Haunted Jaunt(ジョン・レモンのお化け屋敷)」

ステルスゲーム系の新しいチュートリアル「John Lemon's Haunted Jaunt」が追加されました。 Unity Learnにて公開しています。 John Lemon's Haunted Jauntというゲーム チュートリアル スクリーンショット John Lemon's Haunted Jauntというゲーム John Lem…

【Unity】GDC 2019のセッション動画が公開

GDCで行われたUnityのセッション動画の幾つかが公開されました。 Keynote セッション一覧 Keynote Keynoteです。 www.youtube.com 2時間見るのが面倒くさいという場合は、下の記事が凄い分かりやすいです。 www.famitsu.com またGDCの映像の裏で雑談放送もや…

【Unity】Unityのリアルタイムレイトレーシング用ビルドが公開

UnityでRTXを試せるビルドが公開されました。 We've just released an experimental DXR sandbox project in which you can play around with real-time ray tracing in Unity! Please note, this is a prototype and the final implementation of DXR will …

【Unity】Visual Effect Graph(VFX Graph)をLWRPで使用する

Visual Effect GraphがLWRPに対応したので、その設定方法と、対応方法についてです。 Visual Effect Graph Visual Effect GraphがLWRPに対応 LWRP対応の手順 おまけ:Legacy Render Pipelineの対応 感想 関連 Visual Effect Graph Visual Effect Graphはノー…

【Unity】AddressableAssetSystemのAssetReferenceで、一覧表示するアセットを任意の型に制限したい

AddressableでのAssetReferenceで、任意のアセットを指定する方法についてです。 参照するアセットを絞り込んでおきたい AssetReferenceTを使用する 補足 参照するアセットを絞り込んでおきたい Addressableでアセットの遅延ロードを行いたい時、AssetRefere…

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

Addressable Asset Systemで、とりあえず Fast / Virtual Mode ではちゃんと動くのに Packed Play Mode では上手く動かないという場合の、経験則的な対策についてです。 Packed Play Mode と Virtual mode / Fast Modeの違い ゲームの再生が出来ない コンテ…

【Unity】AddressableAssetSystemでSpriteAtlasを使用する

Addressableを使用した場合も、SpriteAtlasの利用手順はそれ程代わりません。 AddressableでSpriteAtlasを使用したスプライトを利用する 対策 Analyzeを使う 手動でスプライトを配置を使う場合… なんか上手くSpriteAtlasが更新されない場合… 感想 関連 Addre…

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

AssetBundleに含めたアセットやシリアライズしたデータ一覧を確認出来る機能を作ってみました。 AssetBundleに自動で含まれるアセット AssetBundleに含まれるアセットを全て確認する 例 現状の問題 CSVで出力もついてでに作ってみる 感想 関連 AssetBundleに…

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

Addressableで他のプロジェクトが作成したAssetBundleを使用する方法についてです。 内容 Addressableで他のプロジェクトが作成したAssetBundleを使用したい Addressableのビルド用プロジェクトを用意する Addressableでビルド済みAssetBundleを使用する 既…

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

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

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

暗号化したAssetBundleを、「メモリに一旦全展開してからの復号」ではなく、メモリ負荷的に優しい「Streamで復号しながら読む」アプローチについてです。 AssetBundleを暗号化でAssetBundle.LoadFromMemoryを使うとメモリに優しくない AssetBundle.LoadStrea…

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

今回はAddressableのホスティングサービスを試します。 本記事は Addressable Asset System ver 0.6.7 preview を使用しました。 動作確認にサーバーを用意するのが面倒くさい 手順1:動作確認 手順2:ホスティングサービスの起動 手順3:AddressableのRe…

【Unity】ECSで複数のComponentGroupを使う場合

複数のComponentGroupを使う 全く異なるComponentGroupを複数定義する場合はRequireForUpdateを使う 設定違いという点で複数のComponentGroupを使用したい場合は、ChunkIterationを考える 感想 複数のComponentGroupを使う ComponentGroupは、Systemが処理す…

【Unity】GameObjectとコンポーネントをEntityとComponentDataに変換してECSで使えるようにする

SubSceneで独自のコンポーネントや、まだ変換先の無いコンポーネントをComponentDataに差し替えるアプローチについてです。 GameObjectベースのデータをECSベースへ変換する GameObjectをEntityへ変換するAPI MonoBehaviourをComponentDataに変換してもらう…

【Unity】Scene上に構築したステージを、Entity群に変換してECSで利用可能にする「SubScene」

ECS 0.0.12 preview 26から、GameObjectとComponentをEntity&ComponentDataに変換する機能が追加されました。まずは、この中で最も便利であろうSubSceneについて紹介します。 GameObjectをECS向けに変換する SubScene 実際に使ってみる 1. 選択したオブジェ…

【Unity】「アニメーションが再生されない」「止まる」時の対処法

今回は「アニメーションをセットアップしたのに再生されない」や「アニメーションが止まる」といった場合の対処法についてです。知っていれば「当然そうなる」(そういう設定をしている)という動作なのですが、知らないと面倒かもしれないので一覧としてメ…

【Unity】Assembly definition fileのDefine Constrainsで、Scripting Define Symbolsで定義したシンボル毎に動作を切り替える

Assembly definition fileに少し便利な機能が追加されていたので、メモ 本記事はUnity 2018.3がベースです。 Assembly definition file Assembly definition fileとプラットフォームによる動作の切り替え Define Constrains(制約を定義) 感想 関連 Assembly …

【Unity】シーン内のGameObjectやAsset、メニューアイテムを検索できる「Unity Quick Search」

プロジェクト内のオブジェクトやアセット、メニュー操作等を検索出来る「Unity Quick Search」がPackage Managerに追加されました。 Unityプロジェクト内の色々な物が検索できる 使い方 拡張してみた 補足 感想 Unityプロジェクト内の色々な物が検索できる U…

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

Package ManagerにAlembicが追加されたので、試してみました。 Alembicとは? Unity PackageにAlembic Importerが追加 使い方 実際に試してみる 感想 関連 Alembicとは? Alembic for Unityの説明が分かりやすいので引用します。 Alembic は主に映像業界で使…

【Unit】NativeListをIJobParallelForで使いたい

今回はNativeListをIJobParallelForを使用して利用してみます。 NativeListをIJobParallelForで使う 使い方(NativeListの用意) 使い方(NativeListの内容を更新) 中身を確認する 実行結果 コード全文(を少し改造したもの) 感想 関連 NativeListをIJobPa…

【Unity】ECSでComponentGroup内のComponentDataを取得する新API、ToComponentDataArrayとCopyFromComponentDataArray

ComponentDataArray(型)が非推奨になり、代わりにToComponentDataArray(...)とCopyFromComponentDataArray()が追加されました。 これは今までのComponentDataArrayと異なり、NativeArrayを取得します。 ToComponentDataArrayとCopyFromComponentDataArray…

【Unity】ECSの「GetSingleton<T>」と「SetSingleton<T>」について

ECSで新しく追加されたAPI GetSingletonと SetSingletonというAPIについてです。 一つだけのComponentDataを取得する機能 実装例 ジョブの終了待ちを行う 感想 一つだけのComponentDataを取得する機能 GetSingleton<T>()とSetSingleton<T>(...)ですが、ComponentDa</t></t>…

【Unity】IJobParallelForFilterというAPIについて

UnityPackageのJobについてくる2つのAPIの内の一つIJobParallelForFilterとは何ぞや? という事を追ってみました。 オチ Jobsパッケージの2つのAPI ScheduleAppendで要素をフィルタリングしてScheduleFilterで実行する程度の能力 IJob「ParallelFor」Filte…

【Unity】ImmediateWindowで複数のMaterialの設定を一括更新してみる

今回はImmediateWindow(Preview)を使用して、複数のマテリアルの一括更新をやってみます。 正しい使い方では無いっぽいですが、正直な所すごくシックリする使い方でした。 Immediate Windowは開発効率を上げるツールではない それでもエディターの作業効率…

【Unity】ECSの新しいAPI「Entities.ForEach」について

ECSで[Inject]属性が非推奨になり、新しいAPIが追加されました。 https://github.com/Unity-Technologies/EntityComponentSystemSamples/blob/master/Documentation%7E/ecs_best_practices.md 個人的に、多少パフォーマンスを犠牲にして簡単になるなら、プロ…

【Unity】LineRendererの幅を変える設定の場所(たぶん2018.3以降用)

LineRendererで線の幅を変える項目が見つからなかったので、混乱したという話です LineRendererのWidthが無い! Widthの行方 LineRendererのWidthが無い! ふと思いついて、LineRendererの線が指し示す方向へカーソルを流す的なのを作ってる時の話じゃ。 ち…

【Unity】TextMeshProで「数字」をテキストで表現する時にGC Allocを発生させない2つの方法

今回はTextMeshProを使用する際に、UIに文章を表示する際のGCを抑えるアプローチについてです。 数字を表示する際にGCが発生するのを回避したい SetCharArray(...)を使用する SetText(...)を使用する エディターではGCが発生する点に注意 SetCharArray(...)…

【Unity】ジョブシステム上でも動かせるNavMeshの経路計算(Experimental)

ECSのデモで使用されていた、ジョブシステムでも動かそうと思えば動かせるNavMeshのサンプルです。 ちゃんと解説しようとも思いましたが、正直使い所が思いつかないので適当になります。 NavMeshQueryを利用した経路探索 サンプルコード 大雑把な解説 感想 …