テラシュールブログ

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

Unity

【Unity】構造体のデータを異なる型に「再解釈」する

DOTS…特にECSで色々とやっていると、内部のデータは同じなのに型が違うせいで変換しないといけないというケースがあります。 例えば float のバッファを流し込んでバッチ処理を行うAPIがあった時、ローカルのデータで NativeArray<FloatData> のような構造体の配列は直</floatdata>…

【Unity】ブラシを使ってステージにGameObjectをサクサクっと配置する

ステージに木や岩を配置したい 今回やること 手順1:準備 手順2:配置するPrefabの登録 手順3:ブラシで塗る 補足 関連 ProBuilderで地面を作る場合 ステージに木や岩を配置したい ステージを作る際、 木や岩をランダムに配置したい という物があります。…

【Unity】LODGroupの設定を一気に変更する

LODGroup 複数のLODを編集したい LODの設定を一気に上書きするコード 注意:複数編集にPresetが使えそうに見えるが、使ってはいけない 感想 LODGroup 視覚上のポリゴンを削減するという用途でLODGroupという機能は非常にありがたい機能です。これは単純にロ…

【Unity】出来るだけ簡単にNew Input Systemを使いたい

新しいInput Systemは少し面倒くさい PlayerInputを使用する PlayerInputの利用手順 キー入力やゲームパッドの取得 関連 新しいInput Systemは少し面倒くさい 新しいInput Systemですが、正直な意見として面倒くさいというのがあります。アクションにキーを…

【Unity】新しいインプットシステムで、バーチャルパッドに対応させる

バーチャルパッドに対応させる 手順1:UIを作る 手順2:UIのボタンを押したら弾を出す 手順3:スティックを動かしたら動く オマケ:ボタン操作でプレイヤーを動かす 関連 バーチャルパッドに対応させる 新しいInput Systemでバーチャルパッドを作ってみま…

【Unity】新・新しいInput Systemの使い方(Inputsystem ver 1.0版)

以前書いた新しいInput Systemの記事の書き直しです。 新しいInput System(1.0) 導入 作るもの 手順1:Input Actionsを作る 手順2:キャラクターを動かす(コールバックで動かす場合) 手順2:キャラクターを動かす(ポーリングして動かす場合) キーコ…

【Unity】2019.2で追加されたTryGetComponentについて

Unity 2019.2から、TryGetComponentというAPIが追加されました。何時も通りGetComponentで取得する際、なんか見覚えがないAPIがあってビビったのはここだけの話。 TryGetComponent パフォーマンスは? TryGetComponent 今まで「コンポーネントが割り当てられ…

【Unity】LWRPの2Dパイプラインで、ShaderGraphを使ってみる

今回はLWRPの2DRendererでShaderGraphを使用してみます。 2Dパイプライン Shader Graph 使ってみる 注意事項 2Dパイプライン コチラを参照 tsubakit1.hateblo.jp Shader Graph この2Dパイプラインでは、単純なLit/Unlitのシェーダーだけでなく2D用のマスター…

【Unity】LWRPのライトで †暗黒の光† をしたかった

今回は昨日チラっと書いた、暗闇をライトで表現するアプローチについてです。 意図的に暗い空間を作る ライトの減算設定を登録 実際に暗黒の光を発する発光体を配置する 注意点 意図的に暗い空間を作る ステージを作るとき、 重要である事を示すために明るく…

【Unity】LWRPの2D向けライト機能を試してみる

今回はLWRPに追加された2Dライトを試してみます。 2Dにライト 導入手順 とりあえずライトを試す 陰影表現の追加 注意事項 2Dにライト 最近の海外で2Dなゲームでは、2Dでもライティング…正しくは法線効果で光源の位置を示しているゲームをよく見ます。 そのや…

【Unity】Timelineのアニメーションに微調整を加える(Humanoid編)

前回に引き続き、Timelineのアニメーションに微調整を加える方法です。 今回はHumanoid向け HumanoidはTimelineでアニメーションを上書きしにくい IKを使用する場合 Constraintを使用する場合 関連 HumanoidはTimelineでアニメーションを上書きしにくい Huma…

【Unity】Animation Rigging、人型以外のキャラクターにもIKを!

今回はUnity 2019.1のPackageManagerで使えるようになるAnimation Riggingについてです。 Animation Rigging 実際に使ってみる 試した環境 手順 Animation Rigging AnimationRiggingは、Animation C# Jobsの上でキャラクターを手続き的に動かす機能みたいで…

【Unity】UnityPhysicsで、オブジェクト同士が接触した判定を取得する

物理演算でオブジェクト同士が接触した時のイベントを発行する方法についてです。 なお、現段階では明らかに低レベルAPIのみしか提供されておらず、未完成です。 この記事は「今すぐ触ってみたい」という人向けで、正直あまり有益ではありません。 接触イベ…

【Unity】GameObjectでもUnity Physicsを使う

試しにRoll a BallをUnity Physicsで作ってみた所、このテクニック無しだと少し面倒な所があったので紹介。 GameObjectでUnity Physicsを使う キャラクターが消えるのを解決する キャラクターが動かない問題を解決する GameObjectでUnity Physicsを使う Unit…

【Unity】新しい物理演算、Unity Physicsについて

Unity Physicsについて紹介します。 Unity Physicsとは? 事前準備 とりあえずシーンを用意 Unity Physicsに移行 ステージのような大量の当たり判定のある物を一気にロード 新しく増えた設定を使いたい パフォーマンス コード制御関係 関連 Unity Physicsと…

【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が処理す…