unity webgl联机游戏【1.全网最细的WebSocket库安装图文教程】

06-01 1197阅读

WebSoket通信插件用unity自带的插件编译成WebGL后会无法使用,所以需要下载插件进行调用。

一、 WebSocketSharp安装

  • 首先需要下载WebSocketSharp
  • 打开后点击Download package下载unity webgl联机游戏【1.全网最细的WebSocket库安装图文教程】
  • 下载后会得到一个:unity webgl联机游戏【1.全网最细的WebSocket库安装图文教程】
  • 将后缀改为.zip进行解压

    unity webgl联机游戏【1.全网最细的WebSocket库安装图文教程】

  • 解压后会得到一个文件夹,里面有:unity webgl联机游戏【1.全网最细的WebSocket库安装图文教程】
  • 将复制lib目录下的websocket-sharp.dll

    unity webgl联机游戏【1.全网最细的WebSocket库安装图文教程】

  • 在unity工程下的Assets下创建一个文件夹,取名为Plugins,把websocket-sharp.dll复制到里面
  • 第一步大功告成

    二、安装unity-websocket-webgl

    • 打开unity-websocket-webgl
    • 可以选择直接下载压缩包

      unity webgl联机游戏【1.全网最细的WebSocket库安装图文教程】

    • 解压后复制Plugins里的内容unity webgl联机游戏【1.全网最细的WebSocket库安装图文教程】
    • 同样复制到unity工程下的Assets/Plugins
    • 最终你的unity工程中应该有三个文件,如图:

      unity webgl联机游戏【1.全网最细的WebSocket库安装图文教程】

      三、本地测试

      • 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 () {
        		
        	}
        }
        
        • 挂载到一个游戏对象上unity webgl联机游戏【1.全网最细的WebSocket库安装图文教程】

        • 然后写一下服务端,我这边是用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:2164unity webgl联机游戏【1.全网最细的WebSocket库安装图文教程】
          • 先运行Python程序,再运行unity
          • unity中显示:unity webgl联机游戏【1.全网最细的WebSocket库安装图文教程】
          • python中显示:unity webgl联机游戏【1.全网最细的WebSocket库安装图文教程】
          • 说明成功通信!
          • 编译成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改成你的服务器IPunity webgl联机游戏【1.全网最细的WebSocket库安装图文教程】

              • 即可进行通信!

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

相关阅读

目录[+]

取消
微信二维码
微信二维码
支付宝二维码