Unity与IOS交互,调用相机相册,兼容ipad

本文介绍了如何在Unity中与iOS进行交互,特别是在iPad上打开相机相册的过程。涉及权限设置、所需库的添加以及代码实现。在iPad上,相册可以以非全屏模式显示。文章提供了流程概述和关键代码片段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IOS篇

在处理unity和ios的时候,除了对oc不太习惯以外,还有就是iphone和ipad有些方法需要做区别。比如通用的弹窗方法不用,以及ipad上打开相册竟然可以支持显示的相册不是全屏了!好吧,之前一直没有用ipad。具体代码可以从这里下载,测试环境unity2017.4.11、Xcode11。

简单写下流程:

1.unity点击打开->2.提示ios通用弹窗–>3.打开相册或者相机(确认权限)->4.返回image转成base64->5.通知unity。

需要关注的几点

1.把IOSCustomEmoji.h和IOSCustomEmoji. mm 放到unity Asset/Plugins/IOS 下。

2.权限添加:NSPhotoLibraryUsageDescription、NSCameraUsageDescription、NSPhotoLibraryAddUsageDescription(ios11)
3.添加lib库:Photos.framework
动态配置plist相关,可以看这篇博客

以下是ios部分代码
//
//  IOSCustomEmoji.h
//  Unity-iPhone
//
//  Created by akb on 2018/12/19.
//

#ifndef IOSCustomEmoji_h
#define IOSCustomEmoji_h

#import <UIKit/UIKit.h>
#endif /* IOSCustomEmoji_h */
@interface IOSCustomEmoji : UIViewController<UIImagePickerControllerDelegate,UINavigationControllerDelegate>
{
 
}
-(void) openMenu;
+(void) saveImageToPhotosAlbum : (NSString*) p1;
@end

//
//  IOSCustomEmoji.m
//  Unity-iPhone
//
//  Created by akb on 2018/12/19.
//

#import "IOSCustomEmoji.h"
#import <AVFoundation/AVFoundation.h>
#import <Photos/PHPhotoLibrary.h>

@implementation IOSCustomEmoji
#if defined (__cplusplus)
extern "C"
{
#endif
    //打开菜单
    void _openPicture()
    {
        NSLog(@"_openPicture");
        IOSCustomEmoji *app = [[IOSCustomEmoji alloc] init];
        UIViewController *viewController = UnityGetGLViewController();
        [viewController.view addSubview:app.view];
        [app openMenu];
    }
    
    //保存图片
    void _saveImageToPhotoAlbum(char* addr)
    {
        NSLog(@"_saveImageToPhotoAlbum");
        NSString *value = [NSString stringWithUTF8String:addr];
        [IOSCustomEmoji saveImageToPhotosAlbum:value];
    }
#if defined (__cplusplus)
}
#endif

-(void)openMenu
{
    UIAlertController *actionSheet = [UIAlertController alertControllerWithTitle:@"选择图像" message:nil preferredStyle:UIAlertControllerStyleActionSheet];

    
    // 创建action,这里action1只是方便编写,以后再编程的过程中还是以命名规范为主
    UIAlertAction *action1 = [UIAlertAction actionWithTitle:@"拍照" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
        [self takePhoto];
        NSLog(@"打开照相机拍照");
    }];
    UIAlertAction *action2 = [UIAlertAction actionWi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值