Mobile Unity3D——向附近的其他手机发送信息

Mobile Unity3D——向附近的其他手机发送信息,mobile,synchronization,unity3d,Mobile,Synchronization,Unity3d,假设我们有一个10人的小组,彼此距离不超过20米。每个人都有一部手机(iPhone/android/Windows phone) 一个人点击屏幕发送信息 其他人会立即注册。同步是关键。它必须在几毫秒内击中所有目标设备 我该怎么办 网络插座:我看不出这是可行的,因为不保证有任何Wi-Fi网络。也许我设置了一部电话作为接入点,其他的电话连接到它 蓝牙:也许吧 音频:也许,音速可能接近时间分辨率。但是很乱 还有别的吗 我在Unity3D中工作,尽管由于它允许移动插件,我可以在每个平台上单独实现 一

假设我们有一个10人的小组,彼此距离不超过20米。每个人都有一部手机(iPhone/android/Windows phone)

一个人点击屏幕发送信息

其他人会立即注册。同步是关键。它必须在几毫秒内击中所有目标设备

我该怎么办

  • 网络插座:我看不出这是可行的,因为不保证有任何Wi-Fi网络。也许我设置了一部电话作为接入点,其他的电话连接到它
  • 蓝牙:也许吧
  • 音频:也许,音速可能接近时间分辨率。但是很乱
  • 还有别的吗
我在Unity3D中工作,尽管由于它允许移动插件,我可以在每个平台上单独实现

一个只有iphone的解决方案仍然值得关注

编辑:请不要只说“使用蓝牙”

编辑:重新表述问题的一种方法:是否可以设置一组移动电话,以便在它们之间发送UDP数据包?(特设网络?)

编辑:链接:
音频解决方案似乎是一种非常独特的技术。我不能说我听说过这样做,但似乎是合法的。唯一的问题是,由于话筒质量的原因,它可能会失去准确性。我做了一些研究,发现了一种在c#中播放正弦波/方波声音的方法(假设您不使用javascript实现统一)。下面是播放它们的示例:

    int sampRate = 10000;
    short[] buf = new short[10000];
    double ampl = 0.25 * short.MaxValue;
    double freq = 5000;

    for (int s = 0; s < buf.Length; s++){

        buffer[s] = (short)(ampl * Math.Sin((2 * Math.PI * s * freq) / sampleRate));

    }
int sampRate=10000;
short[]buf=新的short[10000];
双振幅=0.25*short.MaxValue;
双频=5000;
对于(int s=0;s
至于获取声音并验证它是否匹配,我很困惑,这就是我的知识的终点,但我知道这是可能的,但可能需要比其价值更多的工作


要回答您的主要问题,最简单的方法是蓝牙

对于android,“WiFi Direct”将完美实现这一点

对于iphone,“多点连接”可能是您想要的

我是一名android开发者,对iphone不太熟悉。就我所知,Wifi直接使用Wifi,多用户连接使用蓝牙

而且,iphone可以连接到android WiFi Direct soft ap

希望这会有所帮助。

使用,您可以实时向同一wifi网络中的所有设备进行广播

有一段时间没有在unity中使用它,但这可能会有所帮助:

这需要一些实验,但如果您可以将手机作为外设连接到一台设备,同时作为另一台设备的主机,您可以构建一个环形网络,将所有数据传输到所有手机

老实说,你只需要连接到一个wifi网络(路由器)。除非项目的目的是构建一个围绕网络体系结构的工作。我假设在一台现成的iphone上使用wifi热点功能是不可能的,因为它已经越狱了。除此之外,文档中没有用于执行此类操作的API

不过,祝你好运,如果你真的想出了一个方法来做到这一点,那么听到这个消息就太好了

不确定“毫秒”同步是否可行,但对于跨平台发现部分,您可以使用SDK,它可以抽象发现附近设备背后的所有复杂工作流程


免责声明:我为Uepaa工作,为iOS和Android开发p2pkit。

使用UNET创建一个运行UNET的专用服务器和一个基于地理位置的位置聊天室。

我认为蓝牙是您的最佳选择。另一个选择是使用GPS坐标的服务器端解决方案,但我认为这不可能达到几毫秒的目标。蓝牙似乎是一条可行之路。WiFi direct(有时也称为WiFi P2P)是一个选项。