iOS 和 Unity 相互調(diào)用
Unity 調(diào)用 iOS
- 在
.cs
文件內(nèi)定義如下函數(shù)
[DllImport ("__Internal")]
private static extern float FooPluginFunction(string name); // 參數(shù)為字符串類(lèi)型,返回值 float 類(lèi)型
- 在
.cpp.
或者 .mm
文件內(nèi)實(shí)現(xiàn)如下函數(shù)
extern "C" {
float FooPluginFunction(const char* name)
{
// Unity 端調(diào)用到 iOS 端
printf("name is = %s", name);
return 1.0;
}
}
iOS 調(diào)用 Unity
- 在
.cpp
或 .mm
文件內(nèi)凭疮,調(diào)用如下方法
// 第一個(gè)參數(shù): 腳本掛載的 Object 的名稱
// 第二個(gè)參數(shù): 在 CS 文件上定義的方法名稱
// 第三個(gè)參數(shù): 傳遞的參數(shù)(只支持傳遞 string 類(lèi)型的內(nèi)容)
UnitySendMessage("GameObjectName1", "iosToUnity", "Message to send");
- 在
.cs
文件內(nèi)實(shí)現(xiàn)饭耳,如下方法
public void iosToUnity(string msg)
{
// iOS 端調(diào)用到 Unity 端
Debug.Log("iOS to Unity, msg = ", msg);
}
iOS 中間層寫(xiě)法
- 新建
Unity_iOS_Bridge.h
和 Unity_iOS_Bridge.mm
文件, 文件放在 Unity 工程的 Assets/Plugins/iOS/
文件夾下
-
Unity_iOS_Bridge.h
文件寫(xiě)法:
#import <Foundation/Foundation.h>
#import "UnityAppController.h"
// 繼承自 UnityAppController
@interface Unity_iOS_Bridge : UnityAppController
@end
-
Unity_iOS_Bridge.mm
文件寫(xiě)法:
// Unity_iOS_Bridge 添加分類(lèi)
IMPL_APP_CONTROLLER_SUBCLASS(Unity_iOS_Bridge)
@implementation Unity_iOS_Bridge
#pragma mark - 生命周期
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 先執(zhí)行父類(lèi)的生命周期方法
[super application:application didFinishLaunchingWithOptions:launchOptions];
// 執(zhí)行自定義操作
return YES;
}
@end
extern "C" {
float FooPluginFunction()
{
// Unity 端調(diào)用到iOS端
return 1.0
}
}
參考
plugins for iOS
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者