unity webgl联机游戏【1.全网最细的WebSocket库安装图文教程】
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())
- 如果你有一个云服务器,可以把Python代码移动到云服务器上,然后把Python的127.0.0.1换成0:0:0:0,然后端口换成你开放的端口,正常服务器一般是开放80的,所以最终修改代码如下:
- 然后将Unity中的IP改为ws://127.0.0.1:2164
- unity中创建一个测试脚本:WebSocketTest,代码如下:
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。