Unity调用iOS原生函数


Unity调用iOS原生函数非常简单,只需要两步即可完成:


第一步:在Unity中声明函数并调用:

声明:

#if UNITY_IPHONE 
[DllImport("__Internal")] 
private static extern void 函数名(参数类型* 参数名)
#endif 
eg:

#if UNITY_IPHONE 
[DllImport("__Internal")] 
  private static extern void SavePhoto(char * picPath)
#endif  



Unity调用:

         IEnumerator unitySaveLocalPic(char * picPath){

              SavePhoto(picPath);

         }


第二步:在iOS中实现函数:


声明:
        extern “C” void 函数名(参数类型* 参数名)

iOS原生实现图片保存到相册eg:

extern "C" void SavePhoto(char *picPath){

        NSString *pathStr = [NSString stringWithUTF8String:picPath];

        UIImage* image = [UIImage imageWithContentsOfFile:pathStr];

        UIImageWriteToSavedPhotosAlbum(image, mySelf , @selector(image:didFinishSavingWithError:contextInfo:), NULL);

        }


-(void)image:(UIImage*)image didFinishSavingWithError:(NSError*)error contextInfo:(void*)contextInfo

      {
        NSString* result;
        if(error)
        {
           result = @"图片保存到相册失败!";
        }
        else
        {
           result = @"图片保存到相册成功!";
        }

        NSLog(@"result---->%@", result);

      }


注:上面的 extern “C” 声明的C函数内部不能直接使用OC的变量self,所以需要声明一个C语言的中间变量来传值,就如上面我写的mySelf,是接受OC的self值的,需要先声明: static id mySelf,然后在适当位置给mySelf赋值,如在viewDidLoad中或者appDelegate里赋值,mySelf = self。



  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值