プルダウンメニューから New Script を選びます。(メニューリストの一番下にあります)
Name 欄に ChatScript01 と入力し、 [Create and Add] ボタンを押します。
以下のように Inspector に ChatScript01 が登録されます。
VisualStudio(またはMonoDevelop)が起動し、ChatScript01 がテキストとして開きます。
public class ChatScript01 : MonobitEngine.MonoBehaviour {
本章で説明しているスクリプトは ChatScript で、今回作成している ChatScript01 ではありません。
// 自動接続スクリプトのボタンと被らないようにする GUILayout.Space(24);
自動接続スクリプトで表示させている、[Connect][GameStart][Disconnect] のボタンの縦幅の分だけ、
ルームへの退室処理(サーバ切断処理)は、自動接続スクリプトが行ないますので削除します。
ルームへの入室処理も、自動接続スクリプトが行ないますので削除します。
サーバへの接続処理も、自動接続スクリプトが行ないますので削除します。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using MonobitEngine;
public class ChatScript01 : MonobitEngine.MonoBehaviour
{
/** ルーム名. */
private string roomName = "";
/** チャット発言文. */
private string chatWord = "";
/** チャット発言ログ. */
List<string> chatLog = new List<string>();
/**
* RPC 受信関数.
*/
[MunRPC]
void RecvChat(string senderName, string senderWord)
{
chatLog.Add(senderName + " : " + senderWord);
if (chatLog.Count > 10)
{
chatLog.RemoveAt(0);
}
}
/**
* GUI制御.
*/
void OnGUI()
{
// 自動接続スクリプトのボタンと被らないようにする
GUILayout.Space(24);
// MUNサーバに接続している場合
if (MonobitNetwork.isConnect)
{
// ルームに入室している場合
if (MonobitNetwork.inRoom)
{
// ルーム内のプレイヤー一覧の表示
GUILayout.BeginHorizontal();
GUILayout.Label("PlayerList : ");
foreach (MonobitPlayer player in MonobitNetwork.playerList)
{
GUILayout.Label(player.name + " ");
}
GUILayout.EndHorizontal();
// チャット発言文の入力
GUILayout.BeginHorizontal();
GUILayout.Label("Message : ");
chatWord = GUILayout.TextField(chatWord, GUILayout.Width(400));
GUILayout.EndHorizontal();
// チャット発言文を送信する
if (GUILayout.Button("Send", GUILayout.Width(100)))
{
monobitView.RPC("RecvChat",
MonobitTargets.All,
MonobitNetwork.playerName,
chatWord);
chatWord = "";
}
// チャットログを表示する
string msg = "";
for (int i = 0; i < 10; ++i)
{
msg += ((i < chatLog.Count) ? chatLog[i] : "") + "\r\n";
}
GUILayout.TextArea(msg);
}
}
// MUNサーバに接続していない場合
else
{
// プレイヤー名の入力
GUILayout.BeginHorizontal();
GUILayout.Label("PlayerName : ");
MonobitNetwork.playerName = GUILayout.TextField(
(MonobitNetwork.playerName == null) ?
"" :
MonobitNetwork.playerName, GUILayout.Width(200));
GUILayout.EndHorizontal();
}
}
}
[Connect] を押すと、そのままチャットルームに移行した状態に変わります。
もちろん、[GameStart]を押すことで、キャラクタを操作しながらチャットを行なう、ということも可能です。