DANH MỤC TÀI LIỆU
Tạo server, client và gửi tin nhắn qua lại bằng Unity.
H ng d n t o server, client và g i tin nh n qua l i b ng Unity.ướ ạ ằ
Chào các b n, hôm nay mình xin gi i thi u v i các b n cách t o 1 ng ệ ớ
d ng có th g i tin nh n v i nhau b ng unity. ể ử
trong khuôn kh bài vi t này, mình ch gi i h n vi c h ng d n cách ế ỉ ớ ạ ở ệ ướ
t o và g i 1 tin nh n c b n, nh ng t bài vi t này mình tin các b n có th ơ ả ư ế
ng d ng nó vào r t nhi u d án khác nhau, nh t là nh ng d án làm game ứ ụ ữ ự
c n server và client mà l i ch bi t dev b ng unity ỉ ế
ok, chúng ta b t đ u nhé!ắ ầ
Bài vi t này chúng ta s s d ng Unity Networking (UNET) đ thu n ti n ế ẽ ử
cho quá trình phát tri n.
B c 1: T o ki u d li u truy n tin.ướ ữ ệ
Chúng ta c n t o ra 1 ki u tin nh n đ client và server có th s ể ử
d ng và đ c ra d li u trong đó. ữ ệ
Nó đ c k th a t class MessageBase c a UNET.ượ ế ừ ừ
using UnityEngine.Networking;
public class DDCMessage : MessageBase
{
public string message;
}
B c 2: T o server.ướ ạ
Chúng ta s t o ra server v i :ẽ ạ
C ng k t n i là 9999 (tùy b n mu n s d ng c ng nào, yêu c u ế ử ụ
không đ c có 2 server trên 1 m ng có cùng 1 c ng đang b t).ượ ổ ậ
Gi i h n s client có th đ ng th i k t n i t i là 10 (vi c gi i h n ớ ạ ờ ế ố ớ ạ
cũng tùy nhu c u và m c đích s d ng c a b n). ử ụ
Vi c g i tin s đ c quy đ nh b ng 1 giá tr g i là MsgType (Ngoài ẽ ượ ị ọ
nh ng MsgType m c đ nh nh connect, disconnect,... chúng ta có th ặ ị ư
t thêm nh ng ID mình mu n đ qu n lý). ố ể ả
Qu n lý các tin nh n tr v b ng cách đăng ký các Handler đ nh n ả ề ằ
bi t các lo i tin tr v khác nhau.ế ả ề
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
public class Server : MonoBehaviour {
int port = 9999;
int maxCon = 10;
// roomID s d ng đ g i nh n tin nh n gi a server và clientử ụ ể ử
short roomID = 1234;
void Start () {
CreateServer();
}
void CreateServer() {
// Đăng ký qu n lý các s ki n và tin nh n tr v ả ề
RegisterHandlers ();
var config = new ConnectionConfig ();
// Thêm các kênh d ch v đ c h tr . ụ ượ
config.AddChannel (QosType.ReliableFragmented);
config.AddChannel (QosType.UnreliableFragmented);
var ht = new HostTopology (config, maxCon);
if (!NetworkServer.Configure (ht)) {
Debug.Log ("Không t o đ c máy ch , l i do config."); ượ ủ ỗ
return;
} else {
// T o c ng k t n i ế ố
if(NetworkServer.Listen (port))
Debug.Log ("Server t o thành công, c ng k t n i: " + port); ế ố
else
Debug.Log ("Không th t o server trên c ng k t n i: " + port); ể ạ ế
}
}
void OnApplicationQuit() {
NetworkServer.Shutdown ();
}
private void RegisterHandlers () {
// Unity có các tin nh n tr v khác nhau theo MsgType ả ề
NetworkServer.RegisterHandler (MsgType.Connect,
OnClientConnected);
NetworkServer.RegisterHandler (MsgType.Disconnect,
OnClientDisconnected);
// Tin nh n nh n đ c t roomID s đ c đ a t i ượ ẽ ượ ư
OnMessageReceived.
NetworkServer.RegisterHandler (roomID, OnMessageReceived);
}
// Khi có 1 k t n i thành công t i, hàm này s đ c g i.ế ẽ ượ
void OnClientConnected(NetworkMessage netMessage)
{
// B n có th t o 1 tin nh n g i l i cho client đ chúc m ng h đã k t ể ạ ế
n i thành công.
DDCMessage messageContainer = new DDCMessage();
messageContainer.message = "Chúc m ng b n t i v i th gi i này!"; ớ ớ ế ớ
// Ch g i tin nh n cho chính client v a k t n i t i b ng connectionIdỉ ử ế
NetworkServer.SendToClient(netMessage.conn.connectionId,roomID,messag
eContainer);
// Ho c b n có th t o 1 nh n nh n thông báo cho t t c nh ng client ể ạ
khác bi t v vi c có 1 client v a k t n i t i.ế ề ệ ế ố
messageContainer = new DDCMessage();
messageContainer.message = "Th gi i v a đón thêm 1 thành viên ếớừ
m i!";
// G i tin nh n t i t t c nh ng client đã k t n i t i roomID này. ớ ấ ế ố ớ
NetworkServer.SendToAll(roomID,messageContainer);
}
// Khi có 1 k t n i b ng t thì hàm này s đ c g iế ẽ ượ
void OnClientDisconnected(NetworkMessage netMessage)
{
}
// B n có th g i và nh n b t kì lo i tin nào mi n sao nó đ c k th a ể ử ượ ế
t MessageBase
// Client và server có th đ c vi t b i nh ng ng i khác nhau, nh ng ể ượ ế ườ ư
chúng c n đ c s d ng gói tin gi ng nhau, nh ví d bài này là ượ ử ụ ư
DDCMessage
void OnMessageReceived(NetworkMessage netMessage)
{
var objectMessage = netMessage.ReadMessage<DDCMessage>();
Debug.Log("B n v a nh n đ c tin nh n: " + ạ ừ ậ ượ
objectMessage.message);
}
}
B c 3: T o client.ướ ạ
Chúng ta s t o ra client v i :ẽ ạ
thông tin tài liệu
hướng dẫn cách tạo và gửi 1 tin nhắn cơ bản, nhưng từ bài viết này mình tin các bạn có thể ứng dụng nó vào rất nhiều dự án khác nhau, nhất là những dự án làm game cần server và client mà lại chỉ biết dev bằng unity
Mở rộng để xem thêm
từ khóa liên quan
xem nhiều trong tuần
yêu cầu tài liệu
Giúp bạn tìm tài liệu chưa có

LÝ THUYẾT TOÁN


×