Unity5でメッセージ文を表示する方法

東北ずん子ちゃんのアクションRPGを作ろうとしてますが、メッセージ文を表示する方法がググってもなかなかこれだ! というのが出てこない。なので実装したソースを下記にメモ書き。「a」キーが押された時に下記のようにメッセージ文を出す実装をする。


DispMsg.cs

using UnityEngine;
using System.Collections;
public class DispMsg : MonoBehaviour {
// Use this for initialization
void Start () {
}
public static int lengthMsg;
public static bool flgDisp = false;
public static float waitTime = 0;
float nextTime = 0;
// Update is called once per frame
void Update () {
}
public GUIStyle msgWnd;
public static string dispMsg;
public static void dispMessage(string msg) {
dispMsg = msg;
flgDisp = !flgDisp;
}
void OnGUI () {
//基準となる画面の幅
const float screenWidth = 1136;
//基準サイズに対するウィンドウサイズと座標
const float msgwWidth = 800;
const float msgwHeight = 200;
const float msgwPosX = (screenWidth - msgwWidth) / 2;
const float msgwPosY = 390;
//画面の幅から1ピクセルを算出
float factorSize = Screen.width / screenWidth;
float msgwX;
float msgwY;
float msgwW = msgwWidth * factorSize;
float msgwH = msgwHeight * factorSize;
//フォントのスタイル
GUIStyle myStyle = new GUIStyle();
myStyle.fontSize = (int)(30 * factorSize);
//メッセージ表示
if(flgDisp == true) {
//ウィンドウ
msgwX = msgwPosX * factorSize;
msgwY = msgwPosY * factorSize;
GUI.Box (new Rect(msgwX, msgwY, msgwW, msgwH),"ウィンドウ", msgWnd);
//メッセージ影用
myStyle.normal.textColor = Color.black;
msgwX = (msgwPosX + 22) * factorSize;
msgwY = (msgwPosY + 22) * factorSize;
GUI.Label(new Rect(msgwX, msgwY, msgwW, msgwH),dispMsg , myStyle);
//メッセージ
myStyle.normal.textColor = Color.white;
msgwX = (msgwPosX + 20) * factorSize;
msgwY = (msgwPosY + 20) * factorSize;
GUI.Label(new Rect(msgwX, msgwY, msgwW, msgwH),dispMsg , myStyle);
}
}
}

このスクリプトをプレイヤーにアタッチさせて、プレイヤーを動かすスクリプトPlayer.cs的なもので下記のようにdispMessage関数を叩くようにする。
if (Input.GetKeyDown ("a")) {
DispMsg.dispMessage ("こんにちは!\n私は東北ずん子です!");
}

上記ソースは「a」キーが押された時に、dispMessage関数で指定したメッセージを表示させる。
これをNPCとぶつかっている時つまりonCollisionEnter中で実装してやると、NPCと接触している時に任意の会話を喋らせたりできる。んでNPC側にtagを定義しておいて、tagごとにメッセージを変えれば、Player.cs中にそのマップのNPCの会話文を全て入れたりできる。と思う。
ただ、おそらくこういうのはスクラッチから書くのは良くない気がする。宴とか便利なライブラリを使ったほうが良い気もしている。まあでもこれでもいけそうなのでひとまずはこれで。

Unity5でメッセージ文を表示する方法」への1件のフィードバック

  1. SECRET: 0
    PASS: 74be16979710d4c4e7c6647856088456
    お久しぶりです、Y平さん。
    時間のある時に拝見させてもらっております。
    こうしてY平さんがゲームを作っているのを見ていると、懐かしい気持ちが溢れてくるとともにシンプルに凄いなって感心しています。
    いつか敵をバッタバッタ倒す雄々しいずん子ちゃんを見たいです。

コメントは停止中です。