Добро пожаловать на сайт "Game Creating CommUnity"
Здравствуйте, уважаемый пользователь!

Возможно, вы впервые на этом сайте и мы очень надеемся, что вам у нас понравится. Администрация сайта сделает всё возможное, чтобы ваше пребывание на сайте было максимально комфортным. Спасибо за внимание!

P.S. Данное окно вас больше не потревожит
Сетевой чат, без подключения дополнитьных серверов - Форум Игроделов
Сб, 12 Июл 2025, 21:31 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Сетевой чат, без подключения дополнитьных серверов
TheAppleJackДата: Вс, 22 Фев 2015, 14:48 | Сообщение # 1
Нет аватара
 
Сообщений: 10
Награды: 0
Репутация: 15
Статус: Offline
Всем привет. В данной статье я хочу рассказать, как создать чат в мультиплеере, не подключая дополнительные сервера. Это очень просто, и можно записать относительно коротким кодом
Код
 
 
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)
---------------------------------------------
И еще один момент: этот скрипт должен лежать на отдельном объекте, потому что игроков может быть несколько, и у каждого будет своя история сообщений, а объект чата будет один.

 
СообщениеВсем привет. В данной статье я хочу рассказать, как создать чат в мультиплеере, не подключая дополнительные сервера. Это очень просто, и можно записать относительно коротким кодом
Код
 
 
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)
---------------------------------------------
И еще один момент: этот скрипт должен лежать на отдельном объекте, потому что игроков может быть несколько, и у каждого будет своя история сообщений, а объект чата будет один.


Автор - TheAppleJack
Дата добавления - 22 Фев 2015 в 14:48
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2025
Войти Зарегистрироваться