Всем привет. В данной статье я хочу рассказать, как создать чат в мультиплеере, не подключая дополнительные сервера. Это очень просто, и можно записать относительно коротким кодом
Код
using UnityEngine; using System.Collections;
public class Chat : MonoBehaviour { public string messages //да, нам понадобится всего одна переменная типа string для хранения всех сообщений public bool opened //переменная, отвечающая за то, показываем мы окно чата на экране, или нет public string inputTex //текст, который мы вводим для отправки
void OnGUI () { if (opened) //если чат открыт, то... { GUI.Window (0, new Rect (Screen.width - 200, Screen.height - 400, 200, 370), chatWindow, "Chat"); //создаем окно чата } }
void chatWindow (int windowID) //описываем окно чата: { scrollPosition = GUILayout.BeginScrollView(scrollPosition, GUILayout.Width(180), GUILayout.Height(320)); //создаем скроллинговую зону: если ее содержимое будет выходить за границы, то будет отображаться скроллбар для скроллинга GUILayout.Label(messages); //здесь отображаем все сообщения GUILayout.EndScrollView(); //закрываем скроллинговую зону inputText = GUI.TextField (new Rect (0, 340, 150, 30), inputText, 100); //создаем окно для ввода текста if (GUI.Button (new Rect (150, 340, 50, 30), "send")) //создаем кнопку, для отправки текста { if (inputText[0]=='<') //проверяем первый символ, является ли наш текст командой (первый символ можете установить на свой выбор, но в нашем случае это символ '<'), так же есть один момент: переменная типа string записывается в кавычках " ", а переменная типа char в кавычках ' ', это важно { scanComand (inputText); //подробнее здесь http://gamecreatingcommunity.ru/forum/70-7192-1#152644 } else { networkView.RPC ("Send", RPCMode.All, name, inputText); //если же наш текст не является командой, то мы вызваем у всех подключенных пользователей функцию, добавляющую наш текств чат, она описана ниже; здесь же указываем наше имя и само сообщение } inputText=""; //очищаем наше поле ввода текста } } [RPC] //!!!ВАЖНО ДЛЯ ВСЕХ RPC СОБЫТИЙ!!! void Send (string sender, string message) //создаем событие отправки сообщение, требующее имя отправителя и само сообщение { { messages+= "\n"+sender+": "+message; //добавляем наше сообщение ко всем остальным. Оно выведется с новой строки, т.к. мы указали вначале "\n" } } }
Добавлено (22 Фев 2015, 14:48) --------------------------------------------- И еще один момент: этот скрипт должен лежать на отдельном объекте, потому что игроков может быть несколько, и у каждого будет своя история сообщений, а объект чата будет один.