Всем привет. В данной статье я хочу рассказать, как создать чат в мультиплеере, не подключая дополнительные сервера. Это очень просто, и можно записать относительно коротким кодом
Код
usingUnityEngine; usingSystem.Collections;
publicclassChat:MonoBehaviour { publicstring messages //да, нам понадобится всего одна переменная типа string для хранения всех сообщений publicbool opened //переменная, отвечающая за то, показываем мы окно чата на экране, или нет publicstring inputTex //текст, который мы вводим для отправки
void chatWindow (int windowID)//описываем окно чата: { scrollPosition =GUILayout.BeginScrollView(scrollPosition,GUILayout.Width(180),GUILayout.Height(320));//создаем скроллинговую зону: если ее содержимое будет выходить за границы, то будет отображаться скроллбар для скроллинга GUILayout.Label(messages);//здесь отображаем все сообщения GUILayout.EndScrollView();//закрываем скроллинговую зону inputText = GUI.TextField(newRect(0,340,150,30), inputText,100);//создаем окно для ввода текста if(GUI.Button(newRect(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 СОБЫТИЙ!!! voidSend(string sender,string message)//создаем событие отправки сообщение, требующее имя отправителя и само сообщение { { messages+="\n"+sender+": "+message;//добавляем наше сообщение ко всем остальным. Оно выведется с новой строки, т.к. мы указали вначале "\n" } } }
Добавлено (22 Фев 2015, 14:48) --------------------------------------------- И еще один момент: этот скрипт должен лежать на отдельном объекте, потому что игроков может быть несколько, и у каждого будет своя история сообщений, а объект чата будет один.