Mobile Unity3D——向附近的其他手机发送信息
假设我们有一个10人的小组,彼此距离不超过20米。每个人都有一部手机(iPhone/android/Windows phone) 一个人点击屏幕发送信息 其他人会立即注册。同步是关键。它必须在几毫秒内击中所有目标设备 我该怎么办Mobile Unity3D——向附近的其他手机发送信息,mobile,synchronization,unity3d,Mobile,Synchronization,Unity3d,假设我们有一个10人的小组,彼此距离不超过20米。每个人都有一部手机(iPhone/android/Windows phone) 一个人点击屏幕发送信息 其他人会立即注册。同步是关键。它必须在几毫秒内击中所有目标设备 我该怎么办 网络插座:我看不出这是可行的,因为不保证有任何Wi-Fi网络。也许我设置了一部电话作为接入点,其他的电话连接到它 蓝牙:也许吧 音频:也许,音速可能接近时间分辨率。但是很乱 还有别的吗 我在Unity3D中工作,尽管由于它允许移动插件,我可以在每个平台上单独实现 一
- 网络插座:我看不出这是可行的,因为不保证有任何Wi-Fi网络。也许我设置了一部电话作为接入点,其他的电话连接到它
- 蓝牙:也许吧
- 音频:也许,音速可能接近时间分辨率。但是很乱
- 还有别的吗
音频解决方案似乎是一种非常独特的技术。我不能说我听说过这样做,但似乎是合法的。唯一的问题是,由于话筒质量的原因,它可能会失去准确性。我做了一些研究,发现了一种在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)是一个选项。