UnityにおけるTextMeshProを使用したワールド座標でのテキスト表示方法
Unityでテキストを表示する際、TextMeshProは高品質なテキストレンダリングを提供します。本資料では、TextMeshProを使用してワールド座標およびCanvasを使用してテキストを表示する方法について説明します。
TextMeshProでの表示方法の違い
TextMeshProには主に2つの方法でテキストを表示することができます:
ワールド座標に表示(3Dオブジェクトとして)
GameObject > 3D Object > Text - TextMeshPro
を選択。- シーン内の任意のワールド座標に配置して、オブジェクトの一部として表示します。
Canvasに表示(UIとして)
GameObject > UI > Text - TextMeshPro
を選択。- UI要素としてCanvasに追加し、スクリーン座標やUI内での位置を調整できます。
次のセクションでは、それぞれの方法を詳しく解説します。
手順
1. 3D TextMeshProオブジェクトの作成
- メニューからオブジェクトを作成
Unityエディタの上部メニューから以下を選択します。
GameObject > 3D Object > Text - TextMeshPro
- TextMeshPro Essentialsのインポート(初回のみ)
初めてTextMeshProを使用する場合、プロンプトが表示されますので、Import TMP Essentials
をクリックして必要なリソースをインポートします。 - テキストの編集
Inspectorウィンドウで表示テキスト、フォント、サイズ、色などの設定を行います。 - ワールド座標での配置
TransformコンポーネントのPositionを調整し、シーン内の任意の場所に配置します。これにより、3Dオブジェクトとしてテキストが表示されます。
2. Canvasを使用したTextMeshProのUI表示
- メニューからUIオブジェクトを作成
上部メニューから以下を選択します。
GameObject > UI > Text - TextMeshPro
これにより、Canvas内にTextMeshProオブジェクトが作成されます。
- Canvasの設定
TextMeshProオブジェクトはCanvasの子オブジェクトとして作成されます。Canvasの設定で表示モードを変更できます。
- Render Mode:
Screen Space - Overlay
(デフォルト)またはWorld Space
を選択します。Screen Space - Overlay
では、テキストはスクリーン座標上に表示され、常に画面に固定されます。World Space
に設定すると、Canvas全体がワールド座標に配置されるようになります。
- テキストの編集
Inspectorウィンドウで表示テキスト、フォント、サイズ、色などの設定を行います。 - UI上での配置
TextMeshProオブジェクトはCanvas内に配置されるため、RectTransform
を使ってスクリーン座標やCanvas内での位置を調整します。Anchors
やPivot
の設定を調整して、ウィンドウのサイズ変更に対する動作を制御することも可能です。
スクリプトを使用したテキストの生成(Canvasとワールド座標の両方)
動的にTextMeshProオブジェクトを生成する場合、Canvasの使用とワールド座標の使用で設定が異なります。以下の例は両方のケースでテキストを生成する方法です。
ワールド座標にTextMeshProを表示するスクリプト
using TMPro;
using UnityEngine;
public class CreateWorldText : MonoBehaviour
{
void Start()
{
// 新しいGameObjectを作成
GameObject textObj = new GameObject("WorldText");
textObj.transform.position = new Vector3(0, 0, 0); // 表示位置を設定
// TextMeshProコンポーネントを追加
TextMeshPro textMeshPro = textObj.AddComponent<TextMeshPro>();
textMeshPro.text = "こんにちは、世界!";
textMeshPro.fontSize = 5;
textMeshPro.color = Color.white;
}
}
CanvasにTextMeshProを表示するスクリプト
using TMPro;
using UnityEngine;
public class CreateUIText : MonoBehaviour
{
public Canvas canvas;
void Start()
{
// Canvasの子オブジェクトとしてTextMeshProを追加
GameObject textObj = new GameObject("UIText");
textObj.transform.SetParent(canvas.transform);
// RectTransformの設定
RectTransform rectTransform = textObj.AddComponent<RectTransform>();
rectTransform.sizeDelta = new Vector2(400, 200); // テキストのサイズ設定
rectTransform.localPosition = new Vector3(0, 0, 0); // 位置を設定
// TextMeshProUGUIコンポーネントを追加
TextMeshProUGUI textMeshPro = textObj.AddComponent<TextMeshProUGUI>();
textMeshPro.text = "こんにちは、Canvasの世界!";
textMeshPro.fontSize = 36;
textMeshPro.color = Color.black;
}
}
ワールド座標とCanvasでの違い
特徴 | ワールド座標 | Canvas上での表示 |
---|---|---|
オブジェクトの種類 | 3Dオブジェクト(TextMeshPro ) | UIオブジェクト(TextMeshProUGUI ) |
配置方法 | Transform によるワールド座標の調整 | RectTransform によるUI配置 |
使用用途 | 3Dゲーム内のテキスト表示、目標ラベル | ユーザーインターフェースのテキスト |
レンダリングモード | ワールド座標 | Screen Space - Overlay または World Space |
シェーダーの影響 | ライトや影の影響を受けることがある | UIの影響を受けない |
注意点
CanvasでのRender Mode
の違い
- Screen Space – Overlay
デフォルト設定では、テキストは画面上の絶対座標で表示され、スクリーンサイズに依存します。 - World Space
Canvas全体をワールド座標上に配置し、他の3Dオブジェクトと同じくワールドの影響を受けます。このモードを使用すると、UI要素を3D空間上で自由に配置できます。
TextMeshProのフォント設定
TextMeshProでは、デフォルトフォントやカスタムフォントを使用することができます。特定のフォントを使用する場合は、プロジェクト内にインポートし、TextMeshPro用のフォントアセットに変換してください。
まとめ
TextMeshProを使用することで、Unityで高品質なテキストを表示できます。ワールド座標とCanvasでの使用には違いがあるため、用途に応じた設定を選択してください。ワールド座標でテキストを表示する場合は、3Dオブジェクトとしてシーン内に配置し、Canvasでの表示はUIとして扱うことで効果的にテキストを活用できます。
関連リソース:
ディスカッション
コメント一覧
まだ、コメントがありません