テラシュールブログ

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

【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】Terrainで木の影をベイクする

今回はTerrainで「木の影」をベイクする方法についてです。 木の影をベイクしたい 木の影がベイク出来ない 対策 感想 関連 木の影をベイクしたい 影はほとんどの場合、描画範囲を広くすれば広くするほど汚くなります。これは逆に描画範囲を狭くすれば狭くす…

【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を利用した経路探索 サンプルコード 大雑把な解説 感想 …

【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】1枚の立ち絵から「バストアップ画像」や「顔だけ」のスプライトを切り出して使う

面白い議論が上がっていたので、少し試しにやってみました。 顔だけアイコンでマスクをするのは勿体無い バストアップのスプライトを用意する やり方 オマケ:ポリゴンの切り抜き オマケ:Atlasを使用する場合での注意 関連 顔だけアイコンでマスクをするの…

【Unity】Unity2019.1から"Timeline"がPackage Managerへ移動、ソースコードの確認や変更が可能に

Unity 2017から導入されたTimelineですが、ついにUnity 2019.1からPackage Managerへ移動になりました。 Timeline、Packageへ Timelineのソースコード確認とカスタマイズが可能に ライセンス 関連 Timeline、Packageへ Timelineは殆どC#で記述されている割に…

【Unity】UnityとAndroidアプリの64bit対応

Android 64bit対応が本格化してきたので、少しまとめてみます。 Android 64bit対応 2019年8月から64bit対応してない新規アプリの公開が出来なくなる。更新は可 2021年8月から64bit対応してないアプリを排除。Unityも含む Android 64bit対応済のUnityバージョ…

【Unity】知らないとハマるかもしれない、2Dでスプライトアニメーションが即座に切り替わらない問題の対処方法

今回はMecanim(Animator Controller)を使用している場合に即座にアニメーションが切り替わらない問題、その対策についてです。 例えば上の画像では、右はジャンプ開始時や着地直後に速やかにアニメーションが切り替わっているのに対して、左側はモーション…

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

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

【Unity】2D AnimationのキャラクターにIKをつけてアニメーションで動かすまで

今日は前回の続きで、スケルタルアニメーションをやっていきます。今回やるのは独自のキャラクターを動かす方法についてです。 タナカさん登場 タナカさんをIKで動かせるようにする アニメーションにする 感想 関連 タナカさん登場 前回のキャラクターを動か…

【Unity】2D Animation(v2)でボーンベースで動くキャラクターを作る

今回は Anima 2Dの後継、Unity 2D Animation(V2)でボーンベースで動くキャラクターを作成してみます。 なお今回は長くなりすぎたのでIk周りはやりません。セットアップまでです。 スケルタルベースのキャラクター表現 パッケージの導入 PSBをインポート スキ…

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

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

【Unity】Cinemachineで撮影の構図を色々して良い感じにしたい

この記事はUnity #2 Advent Calendar 2018の20日目の記事です。今は21日だって!?それは本当かい!?まさか遅刻したのに間に合った事にしたのかい!? qiita.com 前回はがむ (@gam0022) | Twitterさんの[Unity] カスタムシェーダーでTextMeshProに独創的な…

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

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

【Unity】iOS/Androidでアプリを休止してもダウンロードを続ける BackgroundDownload

今回はタイトルの通り「アプリを終了(もしくはサスペンド)してもダウンロードを継続する」機能を提供するアセットの機能と使い方についてです。 このアプローチを導入すると、アプリ開始時の「追加コンテンツダウンロード待ち」でアプリを起動しっぱなしで…

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

今回は、キャラクターやUIといったシーンに配置したSpriteのテクスチャを遅延ロードする事で、ユーザーが操作出来るまでの時間を短縮するアプローチついてです。 SceneやPrefabから参照するSpriteは即時ロードされる テクスチャの遅延ロード Textureをロード…

【Unity】Timelineからメソッドを呼ぶ新機能 「Marker」と「Signal、Signal Receiver」

今回はTimelineから特定のメソッドを呼ぶ方法について紹介します。 Unity 2019.1.0a10で追加された、Timelineでメソッドを呼び出すSignalTrackの使い方 #unitytips pic.twitter.com/BEPvS1D6Qb— 椿 (@tsubaki_t1) 2018年11月29日 この機能はUnity 2019.1 a11…

【Unity】SceneViewのカメラが回せなくなった時の対処法

SceneViewが回せないという動作になりました。 コレの解決法についてです。 SceneViewのロックを外す 結論から言えば、SceneViewのロックが入っていた為でした。 ロックされていると、右上のGizmoの色が薄くなります。 なので、このロックを外してやれば、期…

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

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

【Unity】はじめてのScriptable Build Piepline

今回は、先日行われたGotanda.unity #9で話した「はじめてのScriptable Build Pipeline」の解説記事です。 スライド Scriptable Build Pipelineとは? Scriptable Build Pipelineの使い所 導入 Scriptable Build Pipelineを理解するためのサンプルコード 関…

【Unity,ECS】他のEntityが持つComponentDataを追跡する - ComponentDataFromEntity

今回もECSの話です。 ゲームでは特定のオブジェクトを追跡するというのはよくある話です。例えばカーソルやユニット、アイテムやパスなど。 ECSでも同様にそういった機構が必要になる事は多々あります。今回はEntityから特定のキャラクターを追跡させる方法…