Unity导入WebSocketSharp包后仍遇CS0246错误:找不到WebSocket类型
Unity中WebSocketSharp引用失败解决办法
已下载WebSocketSharp包,但编译以下C#脚本时仍出现错误:
Assets\Script\Temperature.cs(10,2): error CS0246: 找不到类型或命名空间名称“WebSocket”(是否缺少 using 指令或程序集引用?)
用户脚本代码:
using System.Collections; using System.Collections.Generic; using UnityEngine; using WebSocketSharp; using TMPro; public class Temperature : MonoBehaviour { [SerializeField] private TextMeshPro textMesh = null; WebSocket ws; string messageWs; private void Start() { ws = new WebSocket("ws://192.168.1.8:1880/ws/Temperature"); ws.Connect(); } void Update() { ws.OnMessage += (sender, e) => messageWs = e.Data; if (textMesh == null) { textMesh = GetComponent<TextMeshPro>(); } if (textMesh != null) { textMesh.text = $"Temperetaure : " + messageWs ; } } }
排查修复步骤
- 确认dll放置路径:将WebSocketSharp的dll文件移到项目的
Assets/Plugins目录下,Unity仅自动识别该目录下的外部程序集,无此目录则手动创建。 - 匹配dll版本:选择与Unity当前.NET框架兼容的版本(Unity多使用.NET Framework 4.x系列),避免下载.NET Core或其他不兼容版本。
- 重新导入程序集:先将dll从项目中移除,再重新拖入Plugins文件夹,触发Unity重新加载程序集,解决缓存导致的识别问题。
- 检查命名空间:确保脚本中
using WebSocketSharp;拼写正确,部分版本可能使用WebSocketSharp.Unity作为命名空间,可通过反编译dll确认。 - 修复脚本逻辑隐患:Update方法中重复绑定
ws.OnMessage会导致内存泄漏,应将事件绑定移至Start方法:
private void Start() { ws = new WebSocket("ws://192.168.1.8:1880/ws/Temperature"); ws.OnMessage += (sender, e) => messageWs = e.Data; ws.Connect(); }
内容的提问来源于stack exchange,提问作者abdou
相关产品推荐
相关产品推荐

