テラシュールブログ

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

Unity2018.3

【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】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】LineRendererの幅を変える設定の場所(たぶん2018.3以降用)

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

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

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

【Unity】TextMeshProにFont FallbackとDynamic SDF Systemが追加、日本語が使いやすくなった。

Unity 2018.3(TextMeshPro1.4)からFont FallbackとDynamic SDF Systemが追加され、柔軟なSDFの利用が可能になりました。 結論 TextMesh Proでダイナミックにフォントを取得して使用する Font Fallback Dynamic SDF System 関連 結論 以下のような使い分け…

【Unity】ProBuilderをLWRPで使用するとピンクになるのを何とかする

ProBuilderでステージを作っているときに、ふと思ってLWRPを適応したところ、見事にピンク色になってしまいました。 ProBuilderのシェーダーはLWRPに対応していない シェーダーを作ろう ProBuilderのシェーダーはLWRPに対応していない LWRPは幾つかの点で非…

【Unity】新しいInput Systemの使い方

あけましておめでとうございます。 今年もよろしくおねがいします。 さて、今回は新しいInput SystemがPackage Managerで使用できるようになったので、実際に使い方を確認してみました。 なおPreview版なので、動作が変化するかもしれません(本記事は0.1.2…

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

Sprite Atlasの設定 幾つかのページ*1*2にて、Sprite AtlasとAssetBundleの組み合わせで問題が起きるという話を聞いたので、確認してみました。 SpriteAtlasをAssetBundleに格納しただけだと問題が起こる 手っ取り早い解決策:SpriteAtlasに登録したSpriteも…

【Unity】Photoshopで作った画像をレイヤー単位で分割、配置/描画順をそのままにSprite Renderで配置してくれる 「2D PSD Importer」

今回はPSDのスプライトをレイヤー単位でスライスし、Photoshopの配置そのままにインポートするPSD Importerという機能を紹介します。 PSD Importer PSD Importerの導入 PSD Importerの設定 感想 関連 PSD Importer PSD Importerは、PSBをインポートするカス…

【Unity】小さく、軽く、早い、Tiny Mode(Project Tiny)についてのアレコレ

コンパクトなUnityゲームを出力するTiny Modeのプレビュー版が公開されました。 ということで、早速触ってみます。 この記事はTiny Mode 0.13.2 previewで作成されています。 モバイルブラウザ向けUnity 現状使える機能群 スクリプトはECSベース レンダリン…

【Unity】Multi-Scene Physicsで、物理演算の世界を分割する

Unity 2018.3の目玉機能(???)の一つである物理演算周りの更新、その一つであるMulti-Scene Physicsについてです。 Multi-Scene Physics PhysicsScene単位で物理演算の速度を変化させる PhysicsScene単位でRaycast 使い方 面白い機能だね!どんな時に使えるの…

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

ゲームでキャラクターをロードしたりする際、画面がカクつくというのは割とよく見る光景です。今回はその辺りの対処法についてメモしておきます。 Async Upload Pipeline(非同期アップロードパイプライン)の活用 シェーダーのウォーミングアップ シェーダ…

【Unity】NavMeshのRaycastを非同期で撃つ!

Unity 2018.3からNavMeshのRaycastを非同期で実行することが出来るようになったので、その方法についてです。 なおExperimentalなAPIを使用するので、今後変わるかもしれません。 NavMeshQuery経由で非同期でRaycastを実行 使ってみる 非同期で動かそう! 関…

【Unity】SpriteAtlasでパックしたスプライトをUIに使用したときに出るゴミの対処

SpriteAtlasを始めとしたパッキングのアプローチを使用することで、スプライトの描画時に必要なパスの数が減り、パフォーマンス的に良い感じになります。よく言われるDrawCallやSetPassの削減というやつです。 さて、SpriteAtlasでスプライトをパッキングし…

【Unity】ECSでシーンをロードする様にEntity群をロードする

今回はECSにおけるEntityのセーブ及びロードについてです。 つまりGameObjectをSceneやPrefabに固めるように、Entity(Entity & ComponentData)をファイルとして書き出します。 なおUnity 2019辺りのタイミングでちゃんとしたエディターサポートが始まるの…

【Unity】C# Job Systemからノイズを使う

前回に引き続き、今回はノイズを使用してみます。 ノイズを使用する コード ノイズを使用する 下のような感じの動きを作ってみます。 Mathfは多分メインスレッドでしか動作しませんが、Mathematicsだと別スレッドでも問題なく動作します。 またRandomと異な…

【Unity】Animation C# Jobsで遊んでみる

Unite LAで盛り上がってますが、今回はソレは置いといてAnimation C# Jobsを試してみます。 Animation C# Jobs 作ってみたもの 解説 コード 感想 関連 Animation C# Jobs Animation C# Jobsは言うならば 「アニメーションを独自実装するモノ」 です。 Playab…

【Unity】新・AnimatorのGameObjectを非アクティブにするとステートマシンがリセットされる問題の対処法

以前、下のリンクで紹介した「AnimatorのGameObjectを非アクティブにするとステートマシン(その他諸々)が破棄される」問題の、対処法です。 tsubakit1.hateblo.jp Animator.keepAnimatorControllerStateOnDisable keepAnimatorControllerStateOnDisableは…

【Unity】指定のコードがGCを発生させるかどうかをテストする(AllocatingGCMemory)

GC(ガベージコレクション)はコードに紛れひっそりと忍び込みます。 今回はソレを見つけるのに便利なAPIが追加されていたので試してみました。 AllocatingGCMemoryでGCの発生を監視する 実際に使ってみる 関連 AllocatingGCMemoryでGCの発生を監視する Unit…

【Unity】ECSでSystemの有効化・無効化についてのまとめ

ECSの基本はSystemです。システムというWorld毎にユニークなオブジェクトが多くのEntityを操作することでゲーム表現を実現しています。 ここで気になるのはSystemを動かす方法、及び止める方法についてです。今回はその辺りについて書いてみます。 Default W…

【Unity】Progressive LightmapperのGPU accelerationでライトマップのベイクが爆速に

Unity 2018.3b3からProgressive LightmapperのベイクにGPU accelerationが使用できるようになりました(Windowsのみ) ので実際に使ってみました。 www.youtube.com 使い方 特に難しいこともなく、ライトマッパーをProgressive GPU(Preview)に変更するだけで…

【Unity】ECSで複数のWorldを運用する方法

「デモとしてのECS」が欲しいなら使いませんが「ゲームとしてのECS」が必要なら知っておくと良い、複数のWorld運用についてです。 ECSを”ゲーム”にするためには 複数のWorldを管理する Worldを作成する 動かすWorldを切り替える Tips World.Active Default W…

【Unity】Unity 2018.3でTimelineの座標系が少し分かりやすくなった

UnityのTimelineは座標系に謎の挙動がありましたが、Unity2018.3でもう少し納得できる感じに修正されました。 Unity 2018.3以前のTimelineの座標系 変化したTimelineの座標系 ApplyTransformOffsetはカットシーン向け ApplySceneOffset Auto 私が本当に欲し…

【Unity】自作のパッケージを追加したりパッケージを一覧から検索したり…PackageManagerがUnity 2018.3で変化したポイント

今回はUnity 2018.3でPackageManagerが変化した幾つかのポイントです。 Package Managerに自作パッケージの追加が可能に 実際の手順 パッケージ化するフォルダの作成 package.jsonの記述 パッケージの登録・登録解除 PackageManagerの一覧表示が少し変わった…

【Unity】コンポーネントを参照しているオブジェクトを見つけ出す方法

ついにUnity 2018.3のベータが開始しました。今回はソコで追加された「コンポーネントを参照しているオブジェクトを見つけ出す」方法について紹介します。 シーン内の参照を検索 見つかるのはInspectorで設定されている場合のみ 実はUnity 2018.3以前も使え…