うにてぃブログ

UnityやUnreal Engineの記事を書いていきます

2025-01-01から1年間の記事一覧

【Unity】UI上でお絵描きしてみよう!ShaderとRawImageを使った簡単ドロー機能

UnityでUI上に直接お絵かきしたいことってありませんか? この記事では、RawImage + RenderTexture + Shader を使って、UI上にスムーズな線を描ける機能の作り方をご紹介します! できること UI(Canvas)上でマウス or タッチ操作によるお絵描き Shaderでな…

【Unity】TextMeshPro フォントを一括置換するエディタ拡張ツール

Unity で UI を開発していると、TextMeshPro のフォントを後から変更したくなることがあります。 特に大量のプレハブを使っているプロジェクトでは、手作業での変更はとても大変です。 今回は、すべてのプレハブに含まれる TextMeshPro コンポーネントのフォ…

【Unity】マリオみたいなジャンプを再現する方法

Unityで「マリオのようなジャンプ」を再現する方法について解説します。 マリオシリーズのジャンプは、普通のジャンプと比べて非常に気持ちよく設計されています。 その秘密は、ジャンプ中・落下中で重力を動的に変化させている点にあります。 なぜ普通のジ…

【Unity】1サンプル Stochastic Tri-Planarマッピング

この記事では、Stochastic Tri-Planar Mapping(確率的トライプラナー・マッピング)の仕組みについて解説し、作成したShaderGraphを共有します。 Tri-Planar Mappingとは? 通常のテクスチャマッピングでは、メッシュに対して1つのUVセットを使用しますが、…

【Unity】ShaderGraph で Bi-Planar Mapping を実装してみた

「UV展開めんどくさい…」「地形に自然にテクスチャ貼りたい!」 そんなときに便利なのが Bi-Planar Mapping(バイプラナーマッピング)。この記事では、GitHubに公開されているShaderGraphを使って、UnityでBi-Planarシェーダーを実装する方法を紹介します。…

【Unity】NMeCabを導入して使ってみた

Unityで日本語の形態素解析を行うために、 軽量・簡単に使える NMeCab を導入してみました! この記事では、 NMeCabの導入方法 Unityへの組み込み手順 メソッド別の解析サンプル をまとめています! NMeCab導入手順 1. DLLファイルをダウンロード まず、NMe…

【Unity】ShaderGraph の CustomFunctionNode 用サンプルHLSL

ShaderGraphのCustomFunctionNodeに使うHLSLファイルを書くとき、毎回ちょっと迷うので、自分用メモとしてサンプルを残しておきます。 テクスチャを読み込んで色を返す関数 テクスチャのUV座標に応じた色をサンプリングして返す、基本的な関数です。 HLSLの…

【Unity】URPでシーンごとに異なるURP Assetを使う方法

UnityのUniversal Render Pipeline(URP)のサンプルプロジェクトなどを見ていると、 Graphicsに設定されたURP Assetとは異なるURP Assetがシーンごとに使われているケースがあります。 「えっ?URP Assetってプロジェクト全体で1個じゃないの?」と思うかも…

【Unity】TextMeshProがビルドサイズを爆増!?Addressablesで解決する方法

Unityでゲーム開発をしていると、「ビルドサイズがでかすぎる!」という壁にぶち当たること、ありませんか? 特にTextMeshPro(TMP)を使っていると、Prefabごとに同じフォントアセットが複製されてしまい、ビルドサイズが爆増するという現象が起きがちです…

【Unity】メッシュをリアルタイムにスライスする

こんにちは!今回はUnityで任意の3Dオブジェクトをメッシュ単位でリアルタイムにカットする処理を実装してみました。この記事では、その仕組みやコードのポイントを解説していきます。 ソースコードは記事の最後に掲載していますので、ぜひ最後までご覧くだ…

【Unity】TMP_InputValidatorの使い方

UnityのTextMeshPro(TMP)には、ユーザーの入力を制御するための便利な仕組みがあります。 そのひとつが TMP_InputValidator です。 TMP_InputValidatorとは? TMP_InputValidator は、TMP_InputField に入力された各文字を検証し、入力を許可するかどうか…

【Unity】PlatformEffector2Dで「下から通れる壁」を作ろう!

2Dアクションゲームを作っていると、「ジャンプして下から通り抜けられるけど、上に乗るとちゃんと乗れる」みたいな壁(いわゆる“すり抜け床”や“片方向の足場”)が欲しくなること、ありますよね? Unityでは PlatformEffector2D という機能を使うことで、簡…

【Unity】OverlapSphereNonAllocが当たったり当たらなかったりする謎 〜Transform変更と物理のズレ〜

Unityで Physics.OverlapSphereNonAlloc() を使ってるとき、当たってるはずなのに当たらない、あるいは逆に当たってるはずじゃないのに当たるという現象に遭遇したことはありませんか? これは実はバグではなく、Transformと物理エンジン(Collider)の更新…

【Unity】Boidsアルゴリズムを利用した群れシステム

はじめに ゲームの中で、鳥や魚の群れの動きを自然に表現したいと思ったことはありませんか? 今回の記事では、Unityを使って「Boidsアルゴリズム」という方法で簡単に群れの動きを作る方法を紹介します。 Boidsアルゴリズムとは? 「Boidsアルゴリズム」と…

【Unity】Unity 6000 で KeywordEnum を利用して Shader のキーワードを外部 HLSL に記述する際の注意点

Unity 6000 以降のバージョンでは、KeywordEnum を利用して Shader のキーワード(#pragma shader_feature など)を外部 HLSL ファイルに記述する際、通常の #include を使用すると、以前のバージョンでは有効だったキーワードが Unity 6000 では無効(Inval…

【Unity】SliderでPointerUpイベントを取得する方法

UnityでSliderの値を変更した際に、スライダーを離したタイミング(PointerUp)を検知したい場合があります。多くの人はSliderを継承してカスタムクラスを作る方法を考えますが、実はEventTriggerを利用すれば簡単に実装できます。 本記事では、EventTrigger…

【Unity】glTFast を使った .glb エクスポートの検証と解決策

検証環境 Unity : 2022.3.55f1 URP: 14.0.11 glTFast: 6.10.1 Packageインポート後の問題 glTFast を Unity Package Manager からインポートした直後、アイコンやロゴのファイルが破損しているエラーが発生 します。 がエクスポート機能には影響がないため無…

【Unity】範囲選択できるスライダーを作る

はじめに Unity の標準 Slider コンポーネントは、1 つの値を変更することしかできません。しかし、ゲームや UI で「最小値と最大値を設定したい」といった場面は多くあります。 例えば: - オーディオ設定で、特定の周波数帯を選択 - ゲーム内のフィルター…

【Unity】Button の ColorTint で複数 Graphic 対応する方法

はじめに UnityのButtonはデフォルトでは1つのGraphicしか設定できません。そのため、ボタンのTransitionをColor Tintに設定した場合、指定した色が適用されるのはtargetGraphicとして設定した1つのみとなります。 例えば、ボタンの背景とテキストの両方を一…

【Unity】MediaPipeUnityPlugin の設定とビルド手順

Mediapipe は、Google によって開発された OSS のコンピュータビジョンライブラリです。顔認識、手のトラッキング、ポーズ推定など、リアルタイムでビジュアルタスクを処理するための強力なツールを提供します。 この Mediapipe を Unity で利用するために、…

【Unity】AR Foundation を Vulkan で使用する方法

AR Foundation を使用している際、Graphics 設定を Vulkan に変更してビルドすると、次のようなエラーが表示されます BuildFailedException: You have enabled the Vulkan graphics API, which is not supported by ARCore. このエラーは、以前は AR Foundat…

【Unity】四面体分割法を用いたメッシュの体積計算

3Dゲーム開発において、メッシュの体積を求めることは、物理シミュレーションやゲームロジックにおいて重要な要素となります。 本記事では、Unityで四面体分割法(Tetrahedral Decomposition Method)を使用して、メッシュの体積を計算する方法を解説します…

【Unity】SceneView にグリッドを表示する

Unityで2Dゲームの開発をしていると、SceneView上にグリッドを表示したくなることがあります。 この記事では、UnityのEditorWindowを利用して、SceneView上にグリッドを表示し、選択したセルをハイライトするカスタムツールを作成します。 機能概要 SceneVie…

【Unity】ランタイムで生成したMeshとMeshColliderの不一致問題の対処法

Unityでランタイム中にMeshを生成し、MeshColliderに利用しようとした際、 「RayCast」ではヒットしない、またはColliderの当たり判定が効かないといった問題に遭遇したことはありませんか? 今回、その原因と対策方法について紹介します。 発生していた問題…