Unity for IOS 加载手机相册图片以及打开相机拍照获取图片

Unity for IOS 加载手机相册图片以及打开相机拍照获取图片

最近想做一个使用unity for IOS获取手机图片的功能,所以就研究了一下

这里我们需要创建两个objective-c文件,最终这两个文件需要放在unity项目中的路径为:Assets\Plugins\IOS
两个文件需要放在unity项目中的路径

一. 首先创建objective-c文件:IOSCameraController.h

//import 引用头文件 相当于Using
#import<QuartzCore/CADisplayLink.h>
//声明一个IOSCameraController类  继承自UIViewController <>里面是是协议/代理的调用声明 可以理解为c#的接口
@interface IOSCameraController : UIViewController<UIImagePickerControllerDelegate,UINavigationControllerDelegate>
@end

二. 再来创建一个objective-c文件:IOSCameraController.m

这个文件用来调用IOS设备打开相机和相册,并获取图片。这里提供接口,供unity使用。unity只需要调用接口就行。
保存之后通知unity 执行对应的回调

//UnitySendMessage 是用来给unity发消息的 有三个参数 1.挂载对应回调脚本的物体名 2.回调函数的名称 3.对应回调上的参数
UnitySendMessage(“Manager”, “Message”, “Temp.jpg”);

#import "IOSCameraController.h"
 
@implementation IOSCameraController
-(void)OpenTarget:(UIImagePickerControllerSourceType)type{
   
    
    
    //创建UIImagePickerController实例
    UIImagePickerController *picker;
    picker= [[UIImagePickerController alloc]init];
    //设置代理
    picker.delegate = self;
    //是否允许编辑 (默认为NO)
    picker.allowsEditing = YES;
    //设置照片的来源
    // UIImagePickerControllerSourceTypePhotoLibrary,      // 来自图库
    // UIImagePickerControllerSourceTypeCamera,            // 来自相机
    // UIImagePickerControllerSourceTypeSavedPhotosAlbum   // 来自相册
    picker.sourceType = type;
    
    //这里需要判断设备是iphone还是ipad  如果使用的是iphone并没有问题 但是如果 是在ipad上调用相册获取图片 会出现没有确定(选择)的按钮 所以这里判断
    //了一下设备,针对ipad 使用另一种方法 但是这种方法是弹出一个界面 并不是覆盖整个界面 需要改进 试过另一种方式 重写一个相册界面
    //(QQ的ipad选择头像的界面 就使用了这种方式 但是这里我们先不讲 (因为我也不太懂 但是我按照简书的一位老哥的文章写出来了 这里放一下这个简书的链接
    //https://www.tlbyxzcx.com)
    if (picker.sourceType == UIImagePickerControllerSourceTypePhotoLibrary &&[[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
   
    
    
        // 设置弹出的控制器的显示样式
        picker.modalPresentationStyle = UIModalPresentationPopover;
        //获取这个弹出控制器
        UIPopoverPresentationController *popover = picker.popoverPresentationController;
        //设置代理
        popover.delegate = self;
        //下面两个属性设置弹出位置
        popover.sourceRect = CGRectMake(0, 0, 0, 0);
        popover.sourceView = self.view;
        //设置箭头的位置
        popover.permittedArrowDirections = UIPopoverArrowDirectionAny;
        //展示选取照片控制器
        [self presentViewController:picker animated:YES completion:nil];
    } else {
   
    
    
        //展示选取照片控制器
        [self presentViewController:picker animated:YES completion:^{
   
    
    }];
    }
   
}
//选择完成,点击界面中的某个图片或者选择(Choose)按钮时触发
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{
   
    
    
    //关闭界面
    [picker dismissViewControllerAnimated:YES completion:^{
   
    
    }];
    //得到照片
   

猜你喜欢

转载自blog.csdn.net/qq_46641769/article/details/105402938