参考文章:iOS原生集成unity—framework形式集成(一) - 简书 (jianshu.com)
iOS中嵌入unity和iOS与unity交互这位博主已经写得很详细了,我这里只是记录一下桥接文件与单例类
桥接文件:
NativeCallProxy.h
// [!] important set UnityFramework in Target Membership for this file
// [!] and set Public header visibility
#import <Foundation/Foundation.h>
// NativeCallsProtocol defines protocol with methods you want to be called from managed
@protocol NativeCallsProtocol
@required
- (void) showHostMainWindow:(NSString*)color;
// other methods
@end
__attribute__ ((visibility("default")))
@interface FrameworkLibAPI : NSObject
// call it any time after UnityFrameworkLoad to set object implementing NativeCallsProtocol methods
+(void) registerAPIforNativeCalls:(id<NativeCallsProtocol>) aApi;
@end
NativeCallProxy.mm
#import <Foundation/Foundation.h>
#import "NativeCallProxy.h"
@implementation FrameworkLibAPI
id<NativeCallsProtocol> api = NULL;
+(void) registerAPIforNativeCalls:(id<NativeCallsProtocol>) aApi
{
api = aApi;
}
@end
extern "C" {
void showHostMainWindow(const char* color) { return [api showHostMainWindow:[NSString stringWithUTF8String:color]]; }
}
单例类:
ConfigObj.h
//
// ConfigObj.h
// nativeiOS
//
// Created by ChuangshiMac on 2021/12/16.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface ConfigObj : NSObject
@property (nonatomic, assign) int gArgc;
@property (nonatomic, assign) char** gArgv;
+(instancetype) shareInstance;
@end
NS_ASSUME_NONNULL_END
ConfigObj.m
//
// ConfigObj.m
// nativeiOS
//
// Created by ChuangshiMac on 2021/12/16.
//
#import "ConfigObj.h"
@implementation ConfigObj
static ConfigObj* _instance = nil;
+(instancetype) shareInstance
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken,^{
_instance = [[self alloc] init];
});
return _instance;
}
@end