gpt4 book ai didi

c# - 在 Unity 中使用 OSC 配置客户端和服务器

转载 作者:太空宇宙 更新时间:2023-11-03 21:55:13 26 4
gpt4 key购买 nike

我正在尝试使用一个名为 UnityOSC 的 Unity 库,它允许您从其他应用程序接收 OSC 消息。我有一个通过 UDP 在以下地址传输数据的应用程序:

主机:127.0.0.1端口:33433

我现在需要配置 UnityOSC 来监听该数据。该库有一个名为 OSCHandler.cs 的脚本,在 init 函数中,您可以设置客户端和服务器。我只是不确定如何设置它。

目前,我正在尝试:

public void Init()
{
CreateClient("FaceClient", IPAddress.Parse("127.0.0.1"), 33433);
CreateServer("FaceServer", 6666);
}

我已经将客户端参数与传输数据的应用程序的参数进行了匹配,服务器只是随机的 - 但老实说,我不确定在其中任何一个中放入什么。理论上,如果我正确设置客户端/服务器,我应该能够像这样在我的更新函数中注册信息:

void Update() {

OSCHandler.Instance.UpdateLogs();
//clients = OSCHandler.Instance.Clients;
servers = OSCHandler.Instance.Servers;

foreach(KeyValuePair<string, ServerLog> item in servers)
{
// If we have received at least one packet,
// show the last received from the log in the Debug console
if(item.Value.log.Count > 0)
{
int lastPacketIndex = item.Value.packets.Count - 1;

UnityEngine.Debug.Log(String.Format("SERVER: {0} ADDRESS: {1} VALUE 0: {2}",
item.Key, // Server name
item.Value.packets[lastPacketIndex].Address, // OSC address
item.Value.packets[lastPacketIndex].Data[0].ToString())); //First data value
}
}
}

但到目前为止,没有任何东西注册到调试器。知道我做错了什么吗?

最佳答案

有两点,请记住我是从命令行而不是在 Unity 编辑器中完成的,所以情况可能会有所不同。

首先,OSCPacket.cs中第50行在命令行版本中抛出异常。不确定 Unity 是否选择 Trace.Assert 或不,但删除该行不会造成任何伤害:

Trace.Assert(string.IsNullOrEmpty(_address) == false);

我猜 UnityOSC 作者打算做类似的事情:

Trace.Assert(string.IsNullOrEmpty(value) == false);

否则我不确定该断言将如何通过,因为 OSCPacket 的派生类 OSCMessage 直接调用其构造函数中的 Address 属性。

其次,如果您尝试在本地机器上测试它,您的端口需要匹配:

    public void Init()
{
CreateServer("Server", 5555);
CreateClient("Client", IPAddress.Parse("127.0.0.1"), 5555);
}

最后是我的手工创作:

        OSCHandler handler = new OSCHandler();
handler.Init();
handler.SendMessageToClient<string>("Client", "127.0.0.1", "TestMessage");
handler.UpdateLogs();

我不得不稍微修改作者的代码以使其在 Unity 之外工作,但只是略微修改。

关于c# - 在 Unity 中使用 OSC 配置客户端和服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12588626/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com