将 C# Websocket 示例转换为 Unity MonoBehaviour

Posted

技术标签:

【中文标题】将 C# Websocket 示例转换为 Unity MonoBehaviour【英文标题】:Convert C# Websocket example to Unity MonoBehaviour 【发布时间】:2017-01-28 17:08:15 【问题描述】:

有点 C# 菜鸟。 尝试使用 Websocket CSharp 库 http://sta.github.io/websocket-sharp/ 在 Unity 中创建套接字服务器。 如何将以下内容转换为 Monobehaviour,以便我可以简单地附加到游戏对象并运行? 我很清楚我正在扩展 Monobehaviour 并且我正在处理 AwakeStartUpdate 方法,但是对于嵌套类来说有点模糊, namespaces , 下面我将在我的 Start 方法中放入什么代码,以及是否应该将所有内容都保存在一个 .cs 文件中,或者将其分解,每个类一个文件。

using System;
using WebSocketSharp;
using WebSocketSharp.Server;

namespace Example

  public class Laputa : WebSocketBehavior
  
    protected override void OnMessage (MessageEventArgs e)
    
      var msg = e.Data == "BALUS"
      ? "I've been balused already..."
      : "I'm not available now.";

      Send (msg);
    
  

  public class Program
  
    public static void Main (string[] args)
    
      var wssv = new WebSocketServer ("ws://dragonsnest.far");
      wssv.AddWebSocketService<Laputa> ("/Laputa");
      wssv.Start ();
      Console.ReadKey (true);
      wssv.Stop ();
    
  



using WebSocketSharp;
using WebSocketSharp.Server;

namespace Example

  public class Laputa : WebSocketBehavior
  
    protected override void OnMessage (MessageEventArgs e)
    
      var msg = e.Data == "BALUS"
      ? "I've been balused already..."
      : "I'm not available now.";

      Send (msg);
    
  

  public class Program
  
    public static void Main (string[] args)
    
      var wssv = new WebSocketServer ("ws://dragonsnest.far");
      wssv.AddWebSocketService<Laputa> ("/Laputa");
      wssv.Start ();
      Console.ReadKey (true);
      wssv.Stop ();
    
  

【问题讨论】:

这里有一个关于如何在 Unity/C# github.com/pudility/unityWS987654322@ 中使用 wesockets 的教程 【参考方案1】:

首先,我将 wssv 变量声明为类变量,位于 MonoBehavior 的顶部。

初始化(构造wssv,通过调用Start()向上)进入Start()。

输入检查(它将取代您的 Console.ReadKey)进入 Update()。 如果您想在按下(例如 Escape)键时停止,您需要检查 Input.GetKeyDown(),然后在 wssv 对象上调用 Stop。

通常在 Unity3d 中,我们将单独的类保存在单独的文件中,即使它们很短。所以我建议将 Laputa 类移动到它自己的文件中(它不应该是 MonoBehavior)。之后,您的 MonoBehavior 文件将具有变量声明、Start() 和 Update()。很干净。

【讨论】:

以上是关于将 C# Websocket 示例转换为 Unity MonoBehaviour的主要内容,如果未能解决你的问题,请参考以下文章

将错误级别分析的 C++ 实现转换为 C#

C# WebSocket 服务端示例代码 + HTML5客户端示例代码

使用 C# 将 SVG 转换为 PNG [关闭]

将 Suprema Biostar C++ 代码转换为 C#

如何将 C++ sscanf_s() 函数转换为 C# [关闭]

如何将 Validation<string, Unit> 转换为成功时为空的字符串?