Сетевой чат, без подключения дополнитьных серверов - Форум Игроделов
Пт, 26 Апр 2024, 01:11 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум Игроделов » UNITY3D » МАНУАЛЫ И УРОКИ » Сетевой чат, без подключения дополнитьных серверов (Сетевой чат, без подключения дополнитьных серверов)
Сетевой чат, без подключения дополнитьных серверов
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
Форум Игроделов » UNITY3D » МАНУАЛЫ И УРОКИ » Сетевой чат, без подключения дополнитьных серверов (Сетевой чат, без подключения дополнитьных серверов)
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2024