注意点としては生成したオブジェクトの親をCanvasにすること。
これをしないとオブジェクトは作られるが画面には表示されません。
以下の説明はCanvasのRenderModeが「Screen Space - Camera」であることを前提として書いています。
表示位置の説明に注意。
右クリック>UI>Text - TextMeshProで新規作成。
表示内容や文字色・サイズは適宜設定。
※TextMeshProの詳しい作り方は「TextMeshProで日本語フォントを表示」ページにて。
TextMeshProが作成できたらほかのオブジェクトと同様、ProjectビューにドラッグドロップするとPrefab化できる。
Prefab化したら、Assets/Resources フォルダに配置する(フォルダがなければ作る)
// TextMeshProがらみはTMProパッケージに入っている
using TMPro;
// サンプル用。敵キャラにAttachしてテスト。
public class EnemyController : MonoBehaviour
{
private GameObject canvas;
private GameObject damageText;
void Start()
{
// 生成したインスタンスはCanvasを親オブジェクトにしないと見えない
canvas = GameObject.Find("Canvas");
// Resourcesフォルダに
damageText = (GameObject)Resources.Load("DamageText", typeof(GameObject));
}
void Update() {
// テスト用にキー入力時にダメージテキストを表示している
if (Input.GetKeyDown(KeyCode.Space)) {
// インスタンス生成
GameObject damageTextInstance = Instantiate(damageText, new Vector3(0, 0, 0), Quaternion.identity);
// Canvasを親にする
damageTextInstance.transform.SetParent(canvas.transform, false);
// 敵キャラクターの場所に配置
damageTextInstance.transform.position = this.transform.position;
// テキストを設定(100ポイントのダメージを頭上に表示
damageTextInstance.GetComponent<TextMeshProUGUI>().text = "100";
}
}
}