在上一個例子基礎上,我們建構一個聊天室程式。
1,首先建立一個新項目,檔案夾名為chat。
2,給接收請求的腳本所綁定的對象,添加網絡視圖元件(聽起來有點繞口)。我們的伺服器腳本是綁定在主錄影機上的,是以點選主錄影機,在菜單上選擇component-->miscellaneous-->Net work View。
3,伺服器端程式:(C# 腳本)
using UnityEngine;
using System.Collections;
public class server : MonoBehaviour {
int Port = 10100;
string Message = "";
//聲明一個二維向量
Vector2 Sc;
//OnGUI方法,所有GUI的繪制都需要在這個方法中實作
void OnGUI(){
//Network.peerType是端類型的狀态:
//即disconnected, connecting, server 或 client四種
switch(Network.peerType){
//禁止用戶端連接配接運作, 伺服器未初始化
case NetworkPeerType.Disconnected:
StartServer();
break;
//運作于伺服器端
case NetworkPeerType.Server:
OnServer();
//運作于用戶端
case NetworkPeerType.Client:
//正在嘗試連接配接到伺服器
case NetworkPeerType.Connecting:
}
}
void StartServer(){
//當使用者點選按鈕的時候為true
if (GUILayout.Button("建立伺服器")) {
//初始化本機伺服器端口,第一個參數就是本機接收多少連接配接
NetworkConnectionError error = Network.InitializeServer(12,Port,false);
//連接配接狀态
switch(error){
case NetworkConnectionError.NoError:
break;
default:
Debug.Log("服務端錯誤"+error);
}
void OnServer(){
GUILayout.Label("服務端已經運作,等待用戶端連接配接");
//Network.connections是所有連接配接的玩家, 數組[]
//取用戶端連接配接數.
int length = Network.connections.Length;
//按數組下标輸出每個用戶端的IP,Port
for (int i=0; i<length; i++)
{
GUILayout.Label("用戶端"+i);
GUILayout.Label("用戶端ip"+Network.connections[i].ipAddress);
GUILayout.Label("用戶端端口"+Network.connections[i].port);
GUILayout.Label("-------------------------------");
if (GUILayout.Button("斷開伺服器")){
Network.Disconnect();
//建立開始滾動視圖
Sc = GUILayout.BeginScrollView(Sc,GUILayout.Width(280),GUILayout.Height(400));
//繪制紋理, 顯示内容
GUILayout.Box(Message);
//結束滾動視圖, 注意, 與開始滾動視圖成對出現
GUILayout.EndScrollView();
//接收請求的方法. 注意要在上面添加[RPC]
[RPC]
void ReciveMessage(string msg, NetworkMessageInfo info){
//剛從網絡接收的資料的相關資訊,會被儲存到NetworkMessageInfo這個結構中
Message = "發送端"+info.sender +"消息"+msg;
//+"時間"+info.timestamp +"網絡視圖"+info.networkView
// Use this for initialization
void Start () {
// Update is called once per frame
void Update () {
}
4,把腳本拖拽到主錄影機上,綁定。
5,運作程式 File---->Build settings---->Build And Run,選擇Web Player
6,伺服器端建立完畢,保持伺服器端的運作狀态。
7,簡單起見,我們這裡不建立項目。先把錄影機上的伺服器腳本删掉,再把下面的用戶端腳本拖拽上去。
用戶端代碼:
public class client : MonoBehaviour {
//要連接配接的伺服器位址
string IP = "127.0.0.1";
//要連接配接的端口
//聊天資訊
//端類型的狀态
StartConnect();
OnClient();
void StartConnect(){
if (GUILayout.Button("連接配接伺服器")){
NetworkConnectionError error = Network.Connect(IP,Port);
Debug.Log("用戶端錯誤"+error);
void OnClient(){
//文本框
Message = GUILayout.TextArea(Message);
if (GUILayout.Button("發送")){
//發送給接收的函數, 模式為全部, 參數為資訊
networkView.RPC("ReciveMessage", RPCMode.All, Message);
GUILayout.EndScrollView();
服務端運作狀态:
用戶端運作狀态:
本文轉蓬萊仙羽51CTO部落格,原文連結:http://blog.51cto.com/dingxiaowei/1366204,如需轉載請自行聯系原作者