テラシュールブログ

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

Unity

【Unity】ECSでチャンク単位のバッチ処理を実現するChunk Iteration、それとComponentGroup

最近のECS界隈で特に理由もなくChunk Iterationを採用されている事をよく見るので、今回そのChunk Iterationついて書いてみます。 ComponentDataの組み合わせの爆発 Chunk Iterationという回避方法 コードを書いてみる 全文 感想 関連 ComponentDataの組み合…

【Unity】Auto Sync Transformと移動時の判定、それと注意点

たぶん2017.2辺りからAuto Sync Transformという項目が追加されました。 この設定はパフォーマンスの観点からOFFが推奨ですが、ONにすべきタイミングもあるかもしれないので、その辺り少し紹介です。 Transform変更時に即座にColliderに反映させるAuto Sync …

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

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

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

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

【Unity】"2D向けの簡単な開発環境"を提供する「Unity Playground」プロジェクト

Unity Playgroundは組み合わせで作るプロジェクト UIが2D向けに簡略化 インタラクティブな動作 感想 関連 Unity Playgroundは組み合わせで作るプロジェクト github.comUnity PlaygroundはUnityを学ぶという目的で少し面白いデモです。これはプログラミング無…

【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】Cinemachineで複数のカメラを使用する

今回はCinemachineで複数のカメラを使用する方法についてです。 複数のカメラを使う Timelineを使用している場合、複数のTrackを用意する Timelineを使用しない場合 複数のカメラを使う ゲームを作成している時、複数のカメラを使用したいというケースが稀に…

【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以前も使え…

【Unity】既存のプロジェクトにLightweight RenderPipelineを導入する

今回はLight Weight Render Pipelineを既存のプロジェクトに導入してみます。 Lightweight render pipeline Light Weight Render Pipelineを使う Lightweight render pipeline Light Weight Render Pipeline(LWRP)は、Scriptable Render Pipelineで提供す…

【Unity】ECSのComponentSystem実行順をコントロールする

今回はECSのComponentSystemも実行順番をコントロールする方法についてです。 ComponentSystemの実行順番は非常に重要 実行順の確認方法 特定のComponentSystemの前に実行する、後に実行する UpdateInGroupで処理のタイミングを大まかに纏める 関連 Componen…

【Unity】エディター操作でシーン間参照を実現する guid-based-reference

Unityでは複数のシーンを同時に編集することは可能ですが、シーン間の参照は出来ません。今回はソレをGUIDベースでなんとかするアプローチについてです。 シーン間参照(Multi Scene Reference)が出来ない シーン間参照がやりたくなるケース GUID BASED REF…

【Unity】ECSのEntityの作成やComponentDataの追加等の操作を別スレッドから実行する

今回はECSのEntityを非同期に作成する方法についてです。主に打規模なシーンのロード等に使用できそうです。 Entityの生成や破棄、削除はメインスレッド上で行う ExclusiveEntityTransaction ExclusiveEntityTransactionを使用しつつEntityManagerも使いたい…

【Unity】「開発計画に役に立つUnityロードマップ 」

Unity 2018.1~Unity 2018.3に渡り追加される機能を網羅的に紹介したスライドです。「こんな機能が追加されるのか!」と中々にテンション上がりそうです。特にNestedPrefabとTerrain改修あたり。 スライド 【CEDEC2018】開発計画に役に立つUnityロードマップ…

【Unity】Unityでベジェ曲線(パス)を描く方法

今回はUnityで曲線を描く方法について紹介します。 Unity 2018.1でVector Graphicが導入可能に Vector Graphicsでベジェ曲線を描画する Vector GraphicsのAPIを見てみる PathのAPIを見てみる 感想 関連 Unity 2018.1でVector Graphicが導入可能に Unity 2018…

【Unity】「一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術 」

先日のCEDEC 2018の資料です。プロファイルに関する幾つかのアップデートが紹介されています。出来なかった事が出来るようになっている部分もあるので、一度見るオススメです。 一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術 from UnityTechnolog…

【Unity】Timeline上でビデオクリップを再生したりフェードで切り替えたりする方法

今回はTimeline上でビデオクリップ(mp4やwebmといったフォーマット)を再生してみます。 Unityでビデオを再生 Timelineでビデオを再生 手順 ビデオのフェード 問題 Unityでビデオを再生 UnityはUnity 5.6辺りでVideo Playerという機能が新しく追加されまし…

【Unity】知っていると少し幸せになれる、Timelineの21の小技集

知っているとTimelineを操作する上で少しだけ幸せになれるTimelineエディター操作の小技集です。動作確認:バージョン Unity 2018.2f5 Tips PlayableDirectorをサクっと追加する シーンの中にあるTimelineを開く アニメーションクリップの一部をスローモーシ…

【Unity】Timeline上で親オブジェクトを切り替える

以前紹介したサンプルですが、これが割と使うケースが多いのでちゃんと紹介しようと思います。 Timelineで親オブジェクトを切り替えたい Timelineで親オブジェクトを差し替える 関連 Timelineで親オブジェクトを切り替えたい Timelineは親オブジェクトを差し…

【Unity】Timelineで、指定したパスを想定した速度で歩かせる

Timelineを用いて、キャラクターを歩かせる(走らせる)方法についてです。以前の移動と異なり、歩行・走行に限りますが複雑な経路を走らせる場合はコチラの方が便利です。 キャラクターを移動させたい パスを決めて、その上を走らせる 移動をTimelineで制御…

【Unity】TimelineでOnBehaviourPlayのタイミングでTrackの情報を使って初期化したい

TimelineでTrackでバインドした情報を使って初期化したくなります。その場合のアプローチについてです。 PlayableBehaviourと初期化 ○○MixerBehaviourのOnBehaviourPlayのタイミングで初期化 ○○Behaviourの場合 サンプル PlayableBehaviourと初期化 Timeline…

【Unity】新・Timelineで字幕を作る

以前の方法が古くなっているので、新しくTimelineで字幕を作ってみます。 TimelineでTextの内容をコントロールする 最初はTimelineでTextの内容をコントロールするだけの簡単なモノを作ってみます。DefaultPlayableのTimelinePlayableWizardで設定するだけで…

「CPUを使い切れ! Entity Component System(通称ECS) が切り開く新しいプログラミング」

ECSを使い切る上で素晴らしい資料が公開されました。 特にジョブシステム上で色々とやりたい場合には凄い参考になると思います。 【CEDEC2018】CPUを使い切れ! Entity Component System(通称ECS) が切り開く新しいプログラミング from UnityTechnologiesJ…

【Unity】Monobehaviourを継承したクラスをAddComponentボタン経由で追加出来なくする方法

「なんの役に立つのか分からない」裏技です。 Monobehaviourを継承したクラスは割と問答無用でAddComponentで追加することが出来るようになります。サンプルでコレを回避するコードを見かけたのでメモします。 やり方は単純で、[AddComponentMenu("")]をクラ…

【Unity】Cinemachineのカメラ位置や向きを、自分のスクリプトで制御する

Cinemachineを紹介すると「自分のシステムと相性が悪い」や「使い方が難しい」といった意見をよく聞きます。とは言えCinemachineが提供する「演出用カメラワークへのシームレスな移動」や「めり込み抑制や振動といったエフェクト」、「手ブレ」は使いたい所…

【Unity】Cinemachineで作るカメラワーク(カット割り:カメラを切り替える)

名前が正しいのか分からないのですが、カット割りでズームするアプローチの方法についてです。 カット割り 三段ズーム(カット割り) 会話のカット割り 感想 カット割り キャラクターの動きを作るとき、カットを割るというのが結構メリハリのある動きを表現…

【Unity】Cinemachineで作るカメラワーク("対象を中心に回り込む"を表現する3つのアプローチ)

Cinemachineでカメラワーク、対象を回り込むように移動させる方法についてです。 対象を中心に回り込むように 2点間のVirtual Cameraを対象を中心に円を描くように動かす SphericalPositionとCylindricalPositionの違い 対象の周囲を回るオブジェクトを用意…