android - 跨平台应用 Unity3D

标签 android ios unity-game-engine cross-platform bluetooth-lowenergy

我有一个用 Unity3D 编写的游戏,以便最终将其发布到 iOS 和 Android。

假设游戏 App 安装在手机上,我想通过外部蓝牙低功耗设备(例如心率传感器)控制它
制作架构的更好方法是什么为了使其跨平台?
例如 - 使其成为在 iOS 和 Android 上实现它的最简单方法?

    *External*        *Mobile* 

蓝牙低功耗设备 --> Something.. --> Unity

Something = 你建议我使用什么跨平台框架可以连接低功耗蓝牙(将来也可以连接数据库)和 Unity3D 来传递逻辑?

非常感谢

最佳答案

Unity 没有有蓝牙 API 可以在 iOS 和 Android 上使用蓝牙。制作插件的方法。

对于 iOS,您可以使用 Ocjective-C 或 C++ 编写插件或函数。然后将 .cpp 或 .mm 文件放在 Assets/Plugins/iOS 目录中。

Android,你必须用Java或C++编写Android插件,然后将其编译成.jar扩展,并将jar文件放在Assets/Plugins/Android

每个插件都应具有相同 的函数名称,以便它们彼此兼容。当您要为 AndroidiOS 编译时,Unity 会自动选择正确的插件文件夹以用于指定的移动平台。

制作此插件的好方法是在 iOS 或 Android 中编写一个完整的应用程序,然后在 XCode 或 Android Studio 中测试您的功能。如果它们有效,那么您可以继续将其转换为插件以在 Unity 中使用。这样可以节省时间。

编辑:

我不喜欢恶意产品,但我知道这会对您有所帮助,所以这里有一个插件,您可以使用它在 Android 和 iOS 上进行蓝牙 LE 通信。 https://www.assetstore.unity3d.com/en/#!/content/26661 这个插件是新的,但我有很好的评价。这就是我发布它的原因。

请记住,大多数心率传感器都带有内置的安全和专有通信协议(protocol)。因此,即使它使用蓝牙,您也必须对协议(protocol)进行逆向工程,然后使用我在此处链接的蓝牙插件编写一个 c# 类才能与它们通信。您可以对任何心率传感器进行逆向工程。只需购买其中一款知名手机,然后即可获得 iPhone 和 Android 手机。

越狱 iPhone 并 root Android 设备。安装蓝牙嗅探应用程序并尝试将您的心率传感器设备与 iPhone 或 Android 进行通信。您可以读取从 iPhone/Android 发送到心率传感器设备的内容或 iPhone/Android 发送到心率传感器设备的内容。这就是您需要在 c# 类中发送给它以使其工作的内容。其他方法是反编译心率传感器设备附带的应用程序(不推荐)。你可以从那里看到发生了什么。

如果心率传感器有适用于 android 或 iOS 的API,您将别无选择,只能在他们提供的 API 之上自行编写插件为了它。

如果您要制作自己的心率传感器设备,那应该会更容易。您可以使用 Arduino 制作原型(prototype)并使用我在此处链接的插件与其通信。如果可行,您就可以继续将其变成真正的产品。

看起来H6和H7是最著名的。他们还有一个开发者页面。与它们进行通信应该很容易,因为它们使用标准协议(protocol)而不是像某些人那样使用专有协议(protocol)。

http://developer.polar.com/wiki/H6_and_H7_Heart_rate_sensors

Android 心率传感器代码(标准):

http://developer.android.com/guide/topics/connectivity/bluetooth-le.html

iOS心率传感器代码(非标准):

http://developer.polar.com/wiki/H6_and_H7_Heart_rate_sensors#HR_example_code_for_Android

您可以向我在链接中发布的插件的开发人员发送电子邮件,询问他们是否可以支持或帮助您实现心率传感器。他们甚至可能会这样做。 祝你好运。

关于android - 跨平台应用 Unity3D,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30269878/

相关文章:

android - 你能在 onDestroy() 中分离一个 fragment 吗?

使用 AWS Cognito、Google+ OAuth 和 AccountManager 的 Android 应用程序

android - Smack 4.1 Android 匿名注册到 Openfire

ios - Xcode 7 - 在 Swift 中初始化 UIView/UILabel/UIButton 时,代码完成无法与 CGRectMake 一起使用

ios - Xamarin 表单 : Back to option is covering the app layout when opening the app from test flight or by search

ios - xcode 命令行构建因 com.apple.compilers.llvm.clang.1_0.compiler 失败

java - 将指向结构体 (StructureByReference) 的指针传递到 C 代码中,如何再次访问该数据?

unity-game-engine - 每帧检查多个球之间碰撞的快速方法

c# - 澄清我对 C# 封装的理解

animation - 当动画已使用 Unity2D Sprite 中的 Animator 添加到游戏对象时,无法翻译游戏对象