对于非科班出身的程序来说,在没有学过C和OC的情况,用unity开发iOS相关的功能,是非常痛苦的。简单写一下自己遇到的,并且没有百度到的坑。
1、C#给OC传递字典
一般流程是,C#调用C,C调用OC,但是C没有字典。处理方法,用结构体数组做中转。核心,结构体数组转换字典。
C#层代码
using System.Runtime.InteropServices;
using UnityEngine;
public class Test : MonoBehaviour
public struct strutDict
public string key;
public string value;
[DllImport("__Internal")]
private static extern void setNEvent(string eventName, int number, strutDict[] dict);
OC和C中的代码
#import <Foundation/Foundation.h>
@interface test:NSObject
+(test *)instance;@end
@implementation test
static test *xam = nil;
-(id)init{
self = [super init];
if(self){
return self;
+(test *)instance{
if(xam == nil){
xam = [[test alloc]init];
return xam;
-(void) testDic:(NSDictionary *)dic
//随你怎么用
#if defined(__cplusplus)
extern "C"{
#endif
struct strutDic{
char* key;
char* value;
void setNEvent (char* eventName, int number,struct strutDic *dict[]){
NSDictionary *nsDic=[[NSDictionary alloc] init];
for(int i=0;i<number;i++){
NSString *key =_CreateNSString((*dict[i]).key);
NSString *value =_CreateNSString((*dict[i]).value);
[nsDic setValue:value forKey:key];
[[test instance]testDic:nsDic];
//[reyun setEvent:_CreateNSString(eventName) andExtra:nsDic];
//char* 转 nsstring
NSString *_CreateNSString(const char* string){
if(string)
return [NSString stringWithUTF8String:string];
return [NSString stringWithUTF8String:""];
Unity3D与iOS的交互1. 关于Unity3D2. From U3D to iOS2.1 实现原理2.2 实现步骤3. From iOS to U3D3.1 UnitySendMessage3.2 非托管方法4. 类型传递4.1 关于Marshal5. 返回值
1. 关于Unity3D
Unity3D(以下简称U3D)是由Unity Technologies开发的一个让玩家轻松创建诸如三维视...
(1)unity3d 中如何调用IOS的Api
1、在C#脚本中使用
(1) 需要导入文件 using System.Runtime.InteropServices;
(2) [System.Runtime.InteropServices.DllImport("__Internal")]
extern static public int AwesomeFunction(...
unity调用OC的方法我们需要用到中间语言c作为通信。整个过程是:c#调用c,c调用oc。
首先我们在建一个unity的工程,新建一个叫sdk的c#脚本,敲如下代码:(注:
一定要引入using System.Runtime.InteropServices;
DllImport 属性其实就是调用dll的意思,
private static extern void _Bt
原因:要用Unity接入一些IOS原生的SDK之类的东西。
合作开发就是这样,突然就会有这种莫名其妙对接的时候,然后让人措手不及。而且现在身边也没有一个搞IOS原生的大佬。于是只是抱着C#语法硬撸了。
1,导出Xcode工程
这个相信打过IOS包的都不陌生。选IOS环境,Build,然后就是一个Xcode工程了。
2,如何交互
网上说了很多方法,五花八门。但我是对OC语言一窍不通的,因为语法和C,...
场景:unity游戏接入第三方sdk时,经常伴随着数据传递,参数类型一般有 int string byte[] 前两张很简单 但是byte[] 传递起来就费劲了 我们下面重点用java和oc 来实现这个传递过程。
1、c# 与oc交互
//unity 传参给ios c# 转 c
public override void Init(int appid, string groupid,byte[] ...
要想在Unity界面上打开一个原生的UIWebView需要在unity界面上覆盖一个新的UIView及其UIViewController,原理是获取当前的unity场景(其实在IOS中也是一个UIViewController)的UIViewController,然后添加子页面和子控制器:
实现步骤如下: