首页 > 其他分享 >Unity3d 截屏保存到相册,并且刷新相册

Unity3d 截屏保存到相册,并且刷新相册

时间:2024-09-02 12:52:00浏览次数:9  
标签:Unity3d 相册 代码 tex Application 截屏 path new

 要做一个截图的功能,并且玩家可以在相册中看到。

 

  做的时候遇到了三个问题:

 

  1、unity自带的截图API,Application.CaptureScreenshot在Android上不生效

 

  2、图片保存的路径获取

 

  3、保存的图片可以在手机的文件管理中找到,但是相册中没有。

 

  解决方案:

 

  1、这个问题查了半天没有说原因,大多数人都给出了新方案用 File.WriteAllBytes去实现,代码如下:

 

复制代码

IEnumerator CutImage(string name)

    {

        //图片大小  

        Texture2D tex = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, true);

        yield return new WaitForEndOfFrame();

        tex.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0, true);

        tex.Apply();

        yield return tex;

        byte[] byt = tex.EncodeToPNG();

        string path = Application.persistentDataPath.Substring(0, Application.persistentDataPath.IndexOf("Android"));

        File.WriteAllBytes(path + "/Pictures/Screenshots/" + name, byt);

    }

复制代码

  2、关于路径Application中有四种路径(可自行百度),我们需要的是保存到截图专用的路径Pictures中,代码参考上面最后两行,也可将最后一样的Pictures/Screenshots(截图路径)可以替换/DCIM/Camera/(相册路径)。这样可以避免删掉游戏后图片消失。

 

  3、关于刷新相册,网上大多数人给的方案为调用java中的MediaScannerConnection.scanFile(百度上很多,这里不细说)。但是因为我们需要热更这个功能,所以必须在unity上去实现。

 

后来一个大佬提了一个建议,用反射。代码如下

 

复制代码

    //刷新图片,显示到相册中

    void ScanFile(string[] path)

    {

        using (AndroidJavaClass PlayerActivity = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))

        {

            AndroidJavaObject playerActivity = PlayerActivity.GetStatic<AndroidJavaObject>("currentActivity");

            using (AndroidJavaObject Conn = new AndroidJavaObject("android.media.MediaScannerConnection", playerActivity, null))

            {

                Conn.CallStatic("scanFile", playerActivity, path, null, null);

            }

        }

    }

复制代码

  在unity中实现刷新相册,算是自己独立解决的一个问题,小小的有成就感。

标签:Unity3d,相册,代码,tex,Application,截屏,path,new
From: https://blog.csdn.net/zhangzhaoyuxunlei/article/details/141816977

相关文章

  • unity3d拼图__附带资源
    要达到吸附效果则需要每个拼图上挂载碰撞体达到整张图片的替换效果需要选中所有拼图部件把材质球拖上去、制作材料球脚本挂载到随便一个空物体上usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassPinTu:MonoBehaviou......
  • 截屏工具:PixPin
    省流:使用PixPin截图,设置格式为JPG。‍一、介绍PixPin‍一个好用的截图工具。官网:https://pixpinapp.com/​​‍支持功能:截图。支持界面元素识别,支持Ctrl+C​复制到剪贴板,Ctrl+C​粘贴到笔记,十分方便。贴图:支持将截图固定在屏幕上,拖动,放大,缩小。标注:支持划线,添......
  • springboot+vue网络相册设计与实现【程序+论文+开题】-计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,数字化生活已成为现代社会的常态。在这个背景下,个人影像资料的存储与分享需求日益增长。传统相册因其实体性、不便携带及难以共享等局限性,已难以满足用户随时随地记录生活、分享美好瞬间的需求。因此,网络相册......
  • springboot+vue网络相册平台【程序+论文+开题】-计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,数字化生活已成为现代社会的常态,人们对于个人影像资料的存储、管理与分享需求日益增长。传统的相册存储方式受限于物理空间、携带不便且难以实现即时共享。网络相册平台应运而生,它利用云计算和大数据技术,为用......
  • springboot+vue网络相册管理系统【程序+论文+开题】-计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,数字图像已成为人们记录生活、分享情感的重要载体。网络相册作为数字图像存储与分享的主要平台之一,其重要性日益凸显。然而,现有的网络相册管理系统往往存在功能单一、用户体验不佳、数据安全与隐私保护不足等......
  • uniapp苹果开发用什么截屏
    uniapp开发好苹果的app后,需要上架到appstoreconnect后,用户才能使用appstore进行安装。在上架appstore的过程中,却要求我们提供多种尺寸的app运行的设备截屏,截止于当前的版本,要6.7寸的、6.5寸的、5.5寸的,还有ipad2代和4代13寸的。这么多种设备,我们也不可能买真手机和真平板来......
  • Java计算机毕业设计网络相册平台(开题+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展和智能设备的普及,人们拍摄和分享照片的方式发生了翻天覆地的变化。传统的实体相册逐渐被数字相册所取代,而网络相册平台作为......
  • Photos框架 - 自定义媒体选择器(相册列表)
    ​​​​​​​Photos框架-自定义媒体资源选择器(数据部分)Photos框架-自定义媒体选择器(UI列表)​​​​​​​Photos框架-自定义媒体选择器(UI预览)Photos框架-自定义媒体选择器(相册列表)引言我们已经实现了媒体资源的列表选择以及媒体资源的大图预览功能,但通常一个......
  • 爱途拍共享相册小程序是一款便捷、易用的云共享相册工具
    爱途拍共享相册小程序是一款功能丰富、操作便捷的图片直播平台,它提供了极致易用的云共享相册服务,让用户能够轻松共享和管理照片与视频资料。以下是对爱途拍共享相册小程序的详细介绍:一、主要功能图片直播:爱途拍支持会议活动、婚礼庆典等场景的图片直播,组织者可以创建一个专门的......
  • 新版本xcode没有5.5寸模拟器,如何截屏
    安装了最新的xcode,发现安装完后,最新的sdk显示是版本17.5,模拟器默认只是支持iphone15这些最新的设备,这个最新的sdk已经不支持以前的iphone8那些设备了。假如要5.5寸截屏,需要下载很旧的sdk,好几个G,还经常下载失败。但是在苹果的上架流程中,5.5寸可是必须要提供的,苹果可真是不考虑客......