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

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

原文链接

using UnityEngine;
using System.Collections;
using System;
using System.IO;

public class CaptureScreenshotMgr: MonoBehaviour
{

    /// <summary>
    /// 保存截屏图片,并且刷新相册(Android和iOS)
    /// </summary>
    /// <param name="name">若空就按照时间命名</param>
    public void CaptureScreenshot(string name = "")
    {
        string _name = "";
        if (string.IsNullOrEmpty(name))
        {
            _name = "Screenshot_" + GetCurTime() + ".png";
        }
        //编辑器下
        //string path = Application.persistentDataPath + "/" + _name;
        //Application.CaptureScreenshot(path, 0);
        //EDebug.Log("图片保存地址" + path);


        //Android版本
        StartCoroutine(CutImage(_name));
        EDebug.Log("图片保存地址" + _name);

    }
    //截屏并保存
    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);
        string[] paths = new string[1];
        paths[0] = path;
        ScanFile(paths);
    }
    //刷新图片,显示到相册中
    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);
            }
        }
    }
    /// <summary>
    /// 获取当前年月日时分秒,如201803081916
    /// </summary>
    /// <returns></returns>
    string GetCurTime()
    {
        return DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString()
            + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString();
    }
}


unity 获取android 刷新相册,Unity3d 截屏保存相册并且刷新相册 要做一个截图的功能,并且玩家可以在相册中看到。做的时候遇到了三个问题:1、unity自带的截图API,Application.CaptureScreenshot在Android上不生效2、图片保存的路径获取3、保存的图片可以在手机的文件管理中找到,但是相册中没有。解决方案:1、这个问题查了半天没有说原因,大多数人都给出了新方案用File.WriteAllBytes去实现,代码如下:IEnumer... 阅读详情

相关推荐

Unity3D截屏保存本地和上传方法

有时候会用到给模型制作模型的图片,就是那种每一个模型的样子,展示每一个模型的图片,如果你有现成的UI那就不需要了,如果没有就可以自己制作了,所以写了一个制作图片小工具,方便使用,简单记录一下大家好,我是心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。下面就让我们进入正文吧!提示:以下是本篇文章正文内容,下面案例可供参考本次总结的就是截屏保存的实现,有需要会继续添加新的不定时更新Unity开发技巧,觉得有用记得一键三连哦。么么哒。

心疼你的一切博客 1442

unity移动端截图保存相册

unity在移动端截图后会直接保存到系统的沙盒中,这个插件会通过调用ios和Android的原生api,将截图自动刷新到手机相册中。

Unity移动端实现屏幕截图相册保存完整指南

随着移动游戏和应用的发展,提供截图分享功能已经成为提升用户体验的重要手段之一。在Unity游戏引擎中实现移动端截图功能不仅能帮助玩家记录游戏精彩瞬间,也是开发者进行内容营销的有效工具。本章将概述Unity移动端截图功能的基本概念和应用场景,同时分析为何在不同平台实现截图功能对开发者而言是一个挑战,以及怎样根据目标平台和设备特性进行选择和优化。通过理解Unity截图功能的基础知识,我们将在后续章节深入探讨如何在Unity中实现这一功能,并分享如何有效地保存、管理和优化截图数据。

weixin_36123300的博客 1422

unity调用相机拍照截屏保存相册刷新

unity 调用相机拍照截屏保存相册刷新相册,不需要调用java方法

unity 截图/图片保存到手机相册

unity保存图片到相册,游戏中需要一些保存图片到相册的操作,在这里分享一些自己在网上查的资料。话不多说直接上代码。 public IEnumerator getTexture2d(Texture2D t) { //截图操作 yield return new WaitForEndOfFrame(); //截图保存的图片 //Texture2D t = new Texture2D(Screen.width, Screen.he

qq_27636823的博客 3196

unity3d 使用存档图片_Unity3d 截屏保存相册并且刷新相册

要做一个截图的功能,并且玩家可以在相册中看到。做的时候遇到了三个问题:1、unity自带的截图API,Application.CaptureScreenshot在Android上不生效2、图片保存的路径获取3、保存的图片可以在手机的文件管理中找到,但是相册中没有。解决方案:1、这个问题查了半天没有说原因,大多数人都给出了新方案用File.WriteAllBytes去实现,代码如下:IEnumer...

weixin_36306387的博客 504

Unity截屏并直接保存相册的插件!

直接调用:ScreenshotHelper.iCaptureScreen(CaptureScreenCallBack);即可实现截屏。 函数void CaptureScreenCallBack(Texture2D texture2D) { new FilePathName().SaveTextureAs(texture2D,FilePathName.SaveFormat.JPG); } 是截屏成功后的回调函数,负责保存图片。 简单易用!经测试,无问题!

Unity安卓手机图片显示在相册中更新

用于Unity调用让安卓手机拍完的照片显示在手机的相册unity保存完后调用刷新 AndroidJavaClass obj = new AndroidJavaClass("com.ryanwebb.androidscreenshot.MainActivity"); while(!photoSaved) { photoSaved = obj.CallStatic("scanMedia", path); yield return new WaitForSeconds(.1f); }

Unity截屏保存相册刷新android

Unity截屏保存到安卓手机相册中,在文件管理中可以看到,但是相册中看不到图片的问题 https://www.cnblogs.com/lihangppz/p/8530351.html

liufei99240的博客 2141

Unity截屏保存到安卓手机相册

1、首先本人同样用了和大家一样的方法在百度查了很久的资料,之后又看API,官方帮助文档,之后终于解决了这个问题。在网上查到的都是代码几乎都是一个模子刻出来的,现在贴上我自己查了资料后改的代码。 2、直接上源码,简单粗暴 using UnityEngine; using System.Collections; using System; using System.IO; using UnityEng...

MMMeKey博客园 5679

(干货)Unity保存图片到手机相册刷新相册(Android和IOS都有哦)

@这周末的时候帮同事做个东西,就是要保存图片到手机相册并且实现双端的,我一听一脸懵逼,我一个半路出家的Unity3D和CocosCreater 程序员不懂原生啊!没办法答应了就要做到。回到正题,下面直接出代码:(注:我这边是直接保存Image的内容,要是截图可能要你们自己实现啊) 这个是目录层级,Plugins/Android/classes,这个是C#调用安卓的刷新相册的方法 IOS文件夹里面的...

q3386776的博客 6963

Unity保存截图到手机相册并立即更新到系统图册

需求:保存图片到系统相册,并能通过微信手动发送该图片给好友。 遇到问题: 1.正常保存图片文件到手机磁盘,但是系统相册APP内看不到图片。 2.通过更新系统扫描后能看到了图片了,但部分国产芯片手机,图片是纯黑色。 解决方案如下: public void ARSnapCapture(){ isScreenShot = true; ...

㊰ ❀ ☀ ☁ ☂ ☃ 1259

Unity iOS截图保存到手机相册总结

Unity iOS捕捉相机拍到的画面并截图保存到手机相册总结 本文专门针对小白,详细(图文)的写了通过unity 3d实现ios捕捉相机拍到的画面并截图保存到手机相册的方法。(对大佬来说可能写的略显繁琐 请自动忽略多余的话) 首先在unity 下创建代码如下: using System.Runtime.InteropServices; public class jietu : Mono...

夕禾Phoebus的博客 5304

Unity3D指定相机截屏并存储在手机相册中(安卓)

最近公司项目里需要截屏的功能,在网上找了好久,都没有合适的解决方法,有些方法已经不能用了,但是也给我提供了一些思路,通过一段时间的研究,解决了这个问题,现在和大家一起分享一下。 //下面是代码,可以直接用public class Screenshots : MonoBehaviour { //这个相机是用来截屏的,相机的Claer Flags 的属性选择为Depth Only public C

Chenzan524的博客 2080
上一篇: Unity 模型在移动端进行移动、旋转和放大(缩小)
下一篇: UnityGameFramework
Until_
博客等级 码龄9年 17粉丝 16原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值