unity webgl联机游戏【1.全网最细的WebSocket库安装图文教程】
unity webgl联机游戏之全网最细的WebSoket安装和测试图文教程
·
WebSoket通信插件用unity自带的插件编译成WebGL后会无法使用,所以需要下载插件进行调用。
一、 WebSocketSharp安装
- 首先需要下载WebSocketSharp
- 打开后点击Download package下载
- 下载后会得到一个:
- 将后缀改为.zip进行解压
- 解压后会得到一个文件夹,里面有:
- 将复制lib目录下的websocket-sharp.dll
- 在unity工程下的Assets下创建一个文件夹,取名为Plugins,把websocket-sharp.dll复制到里面
- 第一步大功告成
二、安装unity-websocket-webgl
- 打开unity-websocket-webgl
- 可以选择直接下载压缩包
- 解压后复制Plugins里的内容
- 同样复制到unity工程下的Assets/Plugins
- 最终你的unity工程中应该有三个文件,如图:
三、本地测试
- unity中创建一个测试脚本:WebSocketTest,代码如下:
using System.Collections;
using System.Collections.Generic;
using System.Text;
using UnityEngine;
using System;
// Use plugin namespace
using HybridWebSocket;
public class WebSocketTest : MonoBehaviour {
public string IP;
// Use this for initialization
void Start () {
// Create WebSocket instance
WebSocket ws = WebSocketFactory.CreateInstance(IP);
// Add OnOpen event listener
ws.OnOpen += () =>
{
Debug.Log("WS connected!");
Debug.Log("WS state: " + ws.GetState().ToString());
ws.Send(Encoding.UTF8.GetBytes("Hello from Unity 3D!"));
};
// Add OnMessage event listener
ws.OnMessage += (byte[] msg) =>
{
Debug.Log("WS received message: " + Encoding.UTF8.GetString(msg));
ws.Close();
};
// Add OnError event listener
ws.OnError += (string errMsg) =>
{
Debug.Log("WS error: " + errMsg);
};
// Add OnClose event listener
ws.OnClose += (WebSocketCloseCode code) =>
{
Debug.Log("WS closed with code: " + code.ToString());
};
// Connect to the server
ws.Connect();
}
// Update is called once per frame
void Update () {
}
}
-
挂载到一个游戏对象上
-
然后写一下服务端,我这边是用python写(需要
pip install websockets
),代码如下
import asyncio
import websockets
async def echo(websocket, path):
try:
async for data in websocket:
print(data)
except websockets.exceptions.ConnectionClosed:
print("连接已关闭")
async def main():
async with websockets.serve(echo, "127.0.0.1", 2164):
await asyncio.Future()
asyncio.run(main())
- 然后将Unity中的IP改为ws://127.0.0.1:2164
- 先运行Python程序,再运行unity
- unity中显示:
- python中显示:
- 说明成功通信!
- 编译成WebGL运行后,python中同样会显示。
四、云端测试
- 如果你有一个云服务器,可以把Python代码移动到云服务器上,然后把Python的127.0.0.1换成0:0:0:0,然后端口换成你开放的端口,正常服务器一般是开放80的,所以最终修改代码如下:
import asyncio
import websockets
async def echo(websocket):
try:
async for data in websocket:
print(data)
except websockets.exceptions.ConnectionClosed:
print("连接已关闭")
async def main():
async with websockets.serve(echo, "0.0.0.0", 80):
await asyncio.Future()
asyncio.run(main())
-
然后把unity里的IP改成你的服务器IP
-
即可进行通信!
更多推荐
所有评论(0)