日々是好日~every day is a good day~

日常の中の非日常の備忘録

【Unity】メッセージを表示する

今回はRPGゲームによくある「**に出会った」というメッセージを表示します
これもやり方は1つではありませんが比較的簡単な方法でできるようにしました
1.ヒエラルキーの+をクリックして UI/画像を選択

2.位置横の四角をクリック
アンカープリセットのbottom/rightをAltキーを押しながらクリック

3.位置や大きさを調整し 画像をドラッグ&ドロップ
オブジェクトの名前を分かりやすいようにMessageBoxに変更

4.MessageBoxを右クリックし UI/古い機能/テキストを選択

5.位置横の四角をクリック
アンカープリセットのstretch/stretchをAltキーを押しながらクリック

6.デフォルトのフォントでは日本語を表示できないので日本語表示のあるフォントを準備しドラッグ&ドロップ
テキストは空にする オブジェクト名はMessageTextに変更

7.MessageBoxのチェックを外して非表示にする

8.魔女の画像をシーン内にドラッグ&ドロップ
オブジェクトの名前をWitchに変更する

9.Witchのコンポーネントを追加をクリックしてBox Collider 2Dを選択

10.プロジェクトのScriptを右クリックして 作成/C#スクリプトを選択してWitchというスクリプトを作成

11.Witchを編集

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Witch : MonoBehaviour
{
    [SerializeField] GameObject messageBox;
    [SerializeField] Text messageText;
    
    private void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.tag == "Player")
        {
            StartCoroutine(TypeMessage("魔女に出会った"));
        }
    }
    IEnumerator TypeMessage(string message)
    {

        messageText.text = "";
        foreach (char letter in message)
        {
            messageBox.SetActive(true);
            messageText.text += letter;
            yield return new WaitForSeconds(1f / 5);
        }
    }
    private void OnCollisionExit2D(Collision2D collision)
    {
        if (collision.gameObject.tag == "Player")
        {
            messageBox.SetActive(false);
        }
    }
}

12.WitchオブジェクトにWitchスクリプトを追加

13.ヒエラルキーのMessageBox MessageTextをWitchスクリプトに設定

14.Playerのタグの▼をクリックしてPlayerを選択

これで実行すると
プレーヤーが魔女に近づくとメッセージが表示され 離れるとメッセージが消えます

(再生できなくなっていたので2024.1.25に修正しました)

同じやり方で他にもャラクターを設置すると楽しそうです