本页详细说明了 iOS 平台的本地代码插件。
[DllImport ("__Internal")] private static extern float FooPluginFunction ();
如果使用 C++ (.cpp) 或 Objective-C++ (.mm) 实现插件,那么必须要确保您创建的功能使用 C linkage 方式声明,避免出现名称重整问题。
extern "C" { float FooPluginFunction (); }
以 C 或 Objective-C 编写的插件无需此项操作,因为这些语言不使用名称重整。
iOS 本地插件只有在部署到实际设备之后才能被调用,因此,建议所有本地代码的类函数都使用一个额外的 C# 代码层包装。此代码应检查 Application.platform,而且仅在应用程序在设备上运行时调用本地类函数;应用程序在编辑器中运行时将返回虚值。查看 Bonjour 浏览器应用程序的案例。
UnitySendMessage("GameObjectName1", "MethodName1", "Message to send");
支持有限的本地管理回调功能。这项功能包括三个参数:目标游戏对象 (GameObject) 的名称、调用这一对象的脚本类函数以及传递给所调用类函数的信息字符串。
已知限制:
function MethodName(message:string)
Unity iOS 以有限的方式支持自动插件集成。在资源 (Assets)/插件 (Plugins)/iOS 文件夹内所有扩展名为.a、.m、.mm、.c、.cpp 的文件都将自动合并到生成的 Xcode 工程。但是,合并通过将资源 (Assets)/插件 (Plugins)/iOS 中的文件符号链接至最终目的地来完成,这可能影响部分工作流程。.h 文件不包含在 Xcode 工程树内,但是它们将出现在目标文件夹中,从而实现 .m/.mm/.c/.cpp 文件编译。
注意:目前不支持子文件夹。
点击此处可查看使用本地代码插件的简单实例。
这一实例演示了如何在 Unity iOS 应用程序中调用 objective-C 代码。此应用程序实现了非常简单的 Bonjour 客户端。 此应用程序包括 Unity iOS 工程(Plugins/Bonjour.cs 是本地代码的 C# 接口,而 BonjourTest.js 则是实现应用程序逻辑的 JS 脚本)和应添加至内置 XCode 工程的本地代码(资源 (Assets)/ 代码 (Code))。
Page last updated: 2013-06-29