Unity3D - 向同一地区的其他手机发送信息

时间:2013-12-02 15:07:12

标签: mobile synchronization unity3d

假设我们有一群10人,彼此距离不到20米。每个人都有一部手机(iPhone / android / Windows手机)。

一个人点击屏幕发送信息。

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

我怎么能这样做?

  • 网络套接字:由于无法保证任何Wi-Fi网络,我看不到这种情况。也许我将一部手机设置为接入点,其他手机连接到它?
  • 蓝牙:也许?
  • 音频:也许,声音的速度可能足够接近时间分辨率。但是很乱。
  • 还有别的吗?

我在Unity3D工作,虽然它允许移动插件我可以按平台单独实现。

仍然有兴趣使用仅支持iPhone的解决方案。

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

编辑:改写问题的一种方法:是否可以设置一堆手机,以便在它们之间发送UDP数据包? (Ad-Hoc网络?)

编辑:链接: Transfer NSString between two devices via bluetooth in iOS Transfer data between iOS and Android via Bluetooth?

6 个答案:

答案 0 :(得分:0)

对于Android,'WiFi-Direct'将完美地做到这一点。

对于iphone,“Multipeer Connectivity”可能就是你想要的。

我是一名Android开发者,对iphone不是很熟悉。据我所知,Wifi-Direct使用wifi,Multipeer Connectivity使用蓝牙。

并且,iphone可以连接到android WiFi-Direct soft ap。

希望这会有所帮助。

答案 1 :(得分:0)

OSC您可以实时向同一个wifi网络中的所有设备广播。

有一段时间没有使用它,但这可能会有所帮助: https://github.com/jorgegarcia/UnityOSC

答案 2 :(得分:0)

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

老实说,你应该只连接到wifi网络(路由器)。除非您的项目的目的是构建一个围绕网络架构的工作。我假设使用wifi热点功能将无法在现成的iphone上工作,因为它被监禁了。最重要的是,用于执行此类操作的API未出现在文档中。

祝你好运,如果你想办法做到这一点,听听它会很棒。

http://en.wikipedia.org/wiki/Token_ring

答案 3 :(得分:0)

不确定"毫秒"同步是可行的,但对于跨平台发现部分,您可以使用诸如http://p2pkit.io之类的SDK来抽象发现附近设备的所有复杂工作流程。

免责声明:我为Uepaa开发适用于iOS和Android的p2pkit。

答案 4 :(得分:0)

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

答案 5 :(得分:-1)

音频解决方案似乎是一种非常独特的技术。我不能说我曾经听说过以这种方式去做,但似乎是合法的。唯一的问题是它可能因麦克风质量而失去准确性。我做了一些研究,发现了一种在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));

    }

至于获得声音并验证它是否匹配,我感到难过,那就是我的知识结束的地方,但我知道它可能,但可能需要更多的工作而不是它的价值。

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