Скрипт конекта:
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
public class GUIConnect : MonoBehaviour
{
public GUIStyle PCLabelsStyle;
public GUIStyle PCBtnStyle;
public GUISkin PCSkin;
private int WB = 170;
private int HB = 45;
private string pname;
private int flag = 1;
private string level = "GameScen";
private int lastLevelPrefix = 0;
public string connectToIP = "127.0.0.1";
public int connectPort = 25001;
private Rect windowRect = new Rect(Screen.width/3,Screen.height/10,300,420);
void Awake () {
DontDestroyOnLoad (this);
}
void Start(){
pname = PlayerPrefs.GetString("Player Name","Без Имени");
}
// Смешанный GUI для сервера и клиента
public void OnGUI()
{
GUI.skin = PCSkin;
if(flag ==1){
windowRect = GUI.Window(0, windowRect, DoMyWindow, "Главное меню ");
}
}
void DoMyWindow(int windowID) {
if (Network.peerType == NetworkPeerType.Disconnected)
{
//Сейчас мы отключены и не являемся клиентом или хостом
GUI.Label(new Rect(30,95,WB+30,HB-15),"Имя:");
GUI.Label(new Rect(30,135,WB+30,HB-15),"IP:");
GUI.Label(new Rect(30,175,WB+30,HB-15),"Порт:");
//Ввод имени
pname = GUI.TextField(new Rect(70,95,WB,HB-10),pname);
connectToIP = GUI.TextField(new Rect(70,135,WB,HB-10),connectToIP);
connectPort = int.Parse(GUI.TextField(new Rect(70,175,WB,HB-10),connectPort.ToString()));
if (GUI.Button(new Rect(60,210,WB,HB),"Подключение",PCBtnStyle))
{
// Подсоединяемся к "connectToIP" и "connectPort" как клиент
// В данном случае игнорируем NAT
Network.Connect(connectToIP, connectPort);
}
if (GUI.Button(new Rect(60,HB+210,WB,HB),"Создать Сервер",PCBtnStyle))
{
// Создаем север с 32 клиентами используя порт "connectPort"
// Так же игнорируем NAT
Network.InitializeServer(32, connectPort,false);
}
//Выход(работает только в приложении)
if (GUI.Button(new Rect(60,HB*2+210,WB,HB),"Выход",PCBtnStyle))
{
Application.Quit();
}
}
else
{
GUI.Label(new Rect(50,95,WB+30,HB-15),"Загрузка...");
PlayerPrefs.SetString ("Player Name",pname);
if(flag == 1){
networkView.RPC( "LoadLevel", RPCMode.All, level, lastLevelPrefix+1);
flag =0;
}
}
}
[RPC]
public IEnumerator LoadLevel (string level, int levelPrefix)
{
Debug.Log("Loading level " + level + " with prefix " + levelPrefix);
lastLevelPrefix = levelPrefix;
Network.isMessageQueueRunning = false;
Network.SetLevelPrefix(levelPrefix);
Application.LoadLevel(level);
yield return new WaitForSeconds(0);
Network.isMessageQueueRunning = true;
Network.SetSendingEnabled(0, true);
foreach (GameObject go in FindObjectsOfType(typeof(GameObject)))
go.SendMessage("Spawnplayer", SendMessageOptions.DontRequireReceiver);
}
}
using System.Collections;
public class GUIConnect : MonoBehaviour
{
public GUIStyle PCLabelsStyle;
public GUIStyle PCBtnStyle;
public GUISkin PCSkin;
private int WB = 170;
private int HB = 45;
private string pname;
private int flag = 1;
private string level = "GameScen";
private int lastLevelPrefix = 0;
public string connectToIP = "127.0.0.1";
public int connectPort = 25001;
private Rect windowRect = new Rect(Screen.width/3,Screen.height/10,300,420);
void Awake () {
DontDestroyOnLoad (this);
}
void Start(){
pname = PlayerPrefs.GetString("Player Name","Без Имени");
}
// Смешанный GUI для сервера и клиента
public void OnGUI()
{
GUI.skin = PCSkin;
if(flag ==1){
windowRect = GUI.Window(0, windowRect, DoMyWindow, "Главное меню ");
}
}
void DoMyWindow(int windowID) {
if (Network.peerType == NetworkPeerType.Disconnected)
{
//Сейчас мы отключены и не являемся клиентом или хостом
GUI.Label(new Rect(30,95,WB+30,HB-15),"Имя:");
GUI.Label(new Rect(30,135,WB+30,HB-15),"IP:");
GUI.Label(new Rect(30,175,WB+30,HB-15),"Порт:");
//Ввод имени
pname = GUI.TextField(new Rect(70,95,WB,HB-10),pname);
connectToIP = GUI.TextField(new Rect(70,135,WB,HB-10),connectToIP);
connectPort = int.Parse(GUI.TextField(new Rect(70,175,WB,HB-10),connectPort.ToString()));
if (GUI.Button(new Rect(60,210,WB,HB),"Подключение",PCBtnStyle))
{
// Подсоединяемся к "connectToIP" и "connectPort" как клиент
// В данном случае игнорируем NAT
Network.Connect(connectToIP, connectPort);
}
if (GUI.Button(new Rect(60,HB+210,WB,HB),"Создать Сервер",PCBtnStyle))
{
// Создаем север с 32 клиентами используя порт "connectPort"
// Так же игнорируем NAT
Network.InitializeServer(32, connectPort,false);
}
//Выход(работает только в приложении)
if (GUI.Button(new Rect(60,HB*2+210,WB,HB),"Выход",PCBtnStyle))
{
Application.Quit();
}
}
else
{
GUI.Label(new Rect(50,95,WB+30,HB-15),"Загрузка...");
PlayerPrefs.SetString ("Player Name",pname);
if(flag == 1){
networkView.RPC( "LoadLevel", RPCMode.All, level, lastLevelPrefix+1);
flag =0;
}
}
}
[RPC]
public IEnumerator LoadLevel (string level, int levelPrefix)
{
Debug.Log("Loading level " + level + " with prefix " + levelPrefix);
lastLevelPrefix = levelPrefix;
Network.isMessageQueueRunning = false;
Network.SetLevelPrefix(levelPrefix);
Application.LoadLevel(level);
yield return new WaitForSeconds(0);
Network.isMessageQueueRunning = true;
Network.SetSendingEnabled(0, true);
foreach (GameObject go in FindObjectsOfType(typeof(GameObject)))
go.SendMessage("Spawnplayer", SendMessageOptions.DontRequireReceiver);
}
}
Писался по урокам)