跨平台应用 Unity3D

Posted

技术标签:

【中文标题】跨平台应用 Unity3D【英文标题】:Cross Platform application Unity3D 【发布时间】:2015-05-15 22:50:58 【问题描述】:

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

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

    *External*        *Mobile* 

蓝牙低功耗设备 --> 东西.. --> Unity

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

非常感谢

【问题讨论】:

【参考方案1】:

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 这个插件是新的,但我有很好的评论。这就是我发布它的原因。

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

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

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

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

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

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

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

【讨论】:

非常感谢您的详细回答。是否有任何跨平台开发软件(在 C# 中首选),我可以在其中编写代码并具有蓝牙 API,并且还可以使用已经制作的插件连接到 Unity?也许 Xamarin ? 我编辑了你的答案。 Xamarin 不是答案。它对学生是免费的,但它有太多的错误。 很好的回答。非常感谢您的详细和专业的回答。 向我提出的另一个问题:假设我希望该统一应用程序连接到蓝牙并连接到数据库并输入心率。有目的的架构是:蓝牙插件,数据库插件,在它上面是使用所有这些插件的游戏逻辑,在它上面是游戏视图?那是你会做的吗?谢谢 您不需要数据库插件来上传到服务器上的数据库。使用 WWWForm 和 WWW 类将心率数据上传到服务器。在服务器端,您可以使用 php 接收心率数据,然后从 php 打开一个数据库并将数据保存到数据库中。您需要网络托管才能做到这一点,它们每月的费用约为 4 到 9 美元。谷歌“Unity php highscore”作为起点。这很容易。现在,如果我提供的所有这些答案都回答了您的第一个问题,您就可以接受答案了。

以上是关于跨平台应用 Unity3D的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D的版本介绍

Android项目实战(三十九):Android集成Unity3D项目(图文详解)

unity3d破解了还不能打包IOS平台吗?难道这是win平台不能打包IOS?一定要在MAC上安装unity3d进行打包吗?

Unity3D无法列出目标平台错误[重复]

集成Unity3D到iOS应用程序中

哪个 Unity 平台最适合 Facebook Canvas 应用