经过诸多摸索与Android端、IOS端的相机相册插件寻找与改写
先是在github中找到了一个UnityNativeCamera的项目,经过测试可以在安卓与IOS双端完美运行,只是缺少相册功能。
后来经过修改项目安卓代码与ios代码,搞出了一个基于这个项目混合了相机与相册的插件。
但是,接下来才是重点!
在我混合插件制作完成已经上线使用的几个月后,我偶然间发现了该项目的作者github上另外一个项目... UnityNativeGallery
该项目实现IOS与Android双端的打开相册与保存功能,于是我立即进行测试,发现也是完美,并且安卓端与IOS端回调方式统一。
于是我对这两个项目进行了功能整合,并且制作了测试场景与功能统一封装、IOS端打包权限合并
基本修改为:添加了NativeCall类作为统一调用,增加了测试场景,与SampleCamera.cs测试代码,修改了PostProcessBuild.cs打包IOS端的权限代码为相机+相册+视频等
并且插件导入无需任何设置即可通用所有版本安卓与IOS
现在可以非常方便的导入即用
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHLwkERNVTRq50MFRUT4d2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLygzM2IjN0YTMyEzMwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
调用测试:
//打开相机
private void OpenCamera()
{
NativeCall.OpenCamera((Texture2D tex)=>
{
rawImage.texture = tex;
rawImage.rectTransform.sizeDelta = new Vector2(tex.width, tex.height);
});
}
//打开相册
private void OpenPhoto()
{
NativeCall.OpenPhoto((Texture2D tex) =>
{
rawImage.texture = tex;
rawImage.rectTransform.sizeDelta = new Vector2(tex.width, tex.height);
});
}
//保存照片
private void SavePhoto()
{
NativeCall.SavePhoto(rawImage.texture as Texture2D);
}
下面是我整合的项目github地址,觉得有用的请务必点个小星星哦~
https://github.com/gameguo/UnityCamera
此外,如果只需要相机功能或者相册功能的话也可以找原作者github链接,个人觉得作者如果做到一起就更好了,因为安卓与ios两个插件内部有很多工具方法是重复的:
UnityNativeCamera
UnityNativeGallery
致敬原作者!原作者在AssetStore上传了插件,也都是免费有兴趣可以看看,不过都是单独的相机和单独的相册功能:
https://assetstore.unity.com/packages/tools/integration/native-camera-for-android-ios-117802
https://assetstore.unity.com/packages/tools/integration/native-gallery-for-android-ios-112630