相关文章推荐
曾经爱过的领结  ·  unity 与oc交互 - 简书·  5 天前    · 
无聊的槟榔  ·  在 Internet ...·  9 月前    · 
聪明伶俐的刺猬  ·  PHP 获取日期 ...·  11 月前    · 
任性的炒面  ·  Unity ...·  1 年前    · 
独立的帽子  ·  使用Python ...·  1 年前    · 

对于非科班出身的程序来说,在没有学过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,然后添加子页面和子控制器: 实现步骤如下: