unity 聊天室
在开发应用时,无论是文字聊天还是语音聊天,都需要先建立一个聊天室。今天,我们将详细学习如何在 Unity 中建立一个简单的聊天室。
代码实现
服务端(Server.js)
服务端的主要功能是初始化服务器,等待客户端的连接。以下是 Server.js 的代码:
var connectPort : int = 2278;
function OnGUI () {
if (Network.peerType == NetworkPeerType.Disconnected) {
GUILayout.Label("Connection status: Disconnected");
Network.InitializeServer(32, connectPort, false);
}
}
代码解释:
connectPort:定义了服务器监听的端口号,这里设置为2278。OnGUI函数:在 Unity 的 GUI 系统中被调用。当网络连接状态为断开时,显示连接状态信息,并初始化服务器,允许最多 32 个客户端连接。
客户端(Client.js)
客户端的功能包括连接到服务器、输入用户名和聊天信息、发送信息以及显示聊天记录。以下是 Client.js 的代码:
var connectToIP : String = "127.0.0.1";
var connectPort : int = 2288;
var MyName:String="";
var Inputword:String="";
var Outputword:String="";
function OnGUI () {
if(Network.peerType == NetworkPeerType.Disconnected) {
GUILayout.Label("Connection status: Disconnected");
if(GUILayout.Button("Connect as client")) {
// 注意:这个 Button 必须写,如果不写可能会出错。
Network.Connect(connectToIP, connectPort);
}
} else {
if(Network.isClient) {
MyName = GUI.TextField(Rect(20, 20, 100, 30), MyName, 20);
Outputword = GUI.TextArea(Rect(20, 50, 400, 300), Outputword, 1000);
Inputword = GUI.TextField(Rect(20, 360, 300, 60), Inputword, 200);
if(GUI.Button(Rect(350, 360, 70, 60), "send")) {
networkView.RPC("SomeoneSay", RPCMode.All, Inputword, MyName);
Inputword = "";
}
}
}
}
@RPC
// 注意:networkView.RPC 调用的函数必须写 "@RPC"
function SomeoneSay(sayWord:String, name:String) {
Outputword = Outputword + "\n" + name + ":\n" + " " + sayWord;
}
代码解释:
connectToIP和connectPort:分别指定要连接的服务器的 IP 地址和端口号,这里 IP 地址为本地回环地址127.0.0.1,端口号为2288。MyName:用于存储客户端用户的名称。Inputword:用于存储用户输入的聊天信息。Outputword:用于存储聊天记录。OnGUI函数:- 当网络连接状态为断开时,显示连接状态信息,并提供一个按钮,点击该按钮可以连接到服务器。
- 当连接成功且当前为客户端时,显示用户名输入框、聊天记录显示区域、聊天信息输入框和发送按钮。点击发送按钮时,调用
networkView.RPC方法将聊天信息和用户名发送给所有客户端,并清空输入框。 SomeoneSay函数:使用@RPC标记,用于接收其他客户端发送的聊天信息,并将其添加到聊天记录中。
通过以上代码,我们就可以在 Unity 中建立一个简单的聊天室,实现基本的文字聊天功能。