Unity—屏幕截图(拍照和自拍功能)

这篇具有很好参考价值的文章主要介绍了Unity—屏幕截图(拍照和自拍功能)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

工作需求,做个记录。

首先在场景中添加一个自拍相机,对着自己。再用脚控制本切换。

Unity—屏幕截图(拍照和自拍功能)

需要注意的是设置这个 Depth 的值尽量小一点,否则切换相机时会发生视角错乱。 

然后设置一个RawImage用来显示截的图片。设置如下图:

Unity—屏幕截图(拍照和自拍功能)

再加一个切换相机的按钮,就不展示了,普通按钮就行。

脚本:文章来源地址https://www.toymoban.com/news/detail-503326.html

    /// <summary>
    /// 拍照按钮
    /// </summary>
    private void OnPhotoHandler()
    {
        timer = 3;
        isSelfie = false;
        photoCamera = Camera.main;//主相机
        //修正自拍相机的位置
        selfieCamera.transform.position = new Vector3(selfieCamera.transform.position.x, selfieTarget.position.y + 1.8f, selfieCamera.transform.position.z);
        StartCoroutine(nameof(TakePhoto));

    }

    /// <summary>
    /// 切换相机(自拍)
    /// </summary>
    private void OnSwitchCamera()
    {
        isSelfie = !isSelfie;
        timer = 3;
        photoCamera = isSelfie ? selfieCamera : Camera.main;//主相机和自拍相机切换
        StopCoroutine(nameof(TakePhoto));
        StartCoroutine(nameof(TakePhoto));
    }
    /// <summary>
    /// 屏幕截图
    /// </summary>
    /// <returns></returns>
    public Texture2D ScreenShot(Camera camera, Rect rect)
    {
        RenderTexture rt = new RenderTexture((int)rect.width, (int)rect.height, 50);
        camera.targetTexture = rt;
        camera.Render();
        RenderTexture.active = rt;
        Texture2D screenShot = new Texture2D((int)rect.width, (int)rect.height, TextureFormat.ARGB32, false);
        //颜色纹理格式,每个通道8位。
        screenShot.ReadPixels(rect, 0, 0);//从屏幕读取像素到保存的纹理数据中。
        screenShot.Apply();//实际上应用所有以前的SetPixel和SetPixels更改。
        camera.targetTexture = null;
        RenderTexture.active = null;
        Destroy(rt);
        byte[] bytes = screenShot.EncodeToJPG();//设置文件类型
        string fileName = DateTime.Now.ToString("yyyyMMddhhmmss") + ".jpg";
        GameLogger.Log(fileName);

        //NativeGallery 是个小插件,本地保存用的,否则要根据设备的不同
        //设置各种路径啥的很麻烦,这个很好用。
        NativeGallery.SaveImageToGallery(bytes, "MetaApePicturs", fileName);

        return screenShot;
    }


    /// <summary>
    /// 拍照(调用的是这个方法)
    /// </summary>
    IEnumerator TakePhoto()
    {
        btn_Photo.interactable = false; //倒计时开始时关闭拍照按钮
        btn_ReverseCamera.gameObject.SetActive(true); //切换相机按钮显示
        //当时间大于零时 执行循环  时间到了 退出循环
        do
        {
            //输出时间
            txt_PhotoCD.text = timer.ToString();
            //并通过协程隔一秒执行一次 累减时间
            yield return new WaitForSeconds(1);
            timer--;
        }
        while (timer > 0);
        btn_ReverseCamera.gameObject.SetActive(false);//切换相机按钮关闭
        int ratio = 1;
        Rect rect = new Rect(0, 0, (int)Screen.width / ratio, (int)Screen.height / ratio);//图片大小取决于ratio的大小
        rawImage.texture = ScreenShot(photoCamera, rect);//截图
        rawImage.enabled = true;
        rawImage.rectTransform.DOScale(0.8f, 2f).SetEase(Ease.Linear).OnComplete(() =>
        {
            rawImage.texture = null;
            rawImage.enabled = false;
            rawImage.rectTransform.DOScale(1f, 0.1f);
            btn_Photo.interactable = true;
        });
    }

到了这里,关于Unity—屏幕截图(拍照和自拍功能)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【PyAutoGUI操作指南】05 屏幕截图与图像定位:截图+定位单个目标+定位全部目标+灰度匹配+像素匹配+获取屏幕截图中像素的RGB颜色

    PyAutoGUI可以拍摄屏幕截图,将其保存到文件中,并在屏幕中定位图像。OSX使用操作系统附带的screencapture命令。Linux使用scrot命令,可以通过运行sudo-apt-get-install-scrot来安装该命令。 功能介绍:一个需要点击的按钮,并且想在屏幕上找到它。

    2024年02月14日
    浏览(42)
  • 树莓派Ubuntu:屏幕截图

    1. 系统自带截图工具 使用键盘的\\\"prt sc\\\"截图 2. 使用scrot 安装 查看安装版本 截图

    2024年01月20日
    浏览(45)
  • 屏幕截图编辑工具Snagit中文

    Snagit是一款优秀的屏幕、文本和视频捕获与转换程序。它能够捕获屏幕、窗口、客户区窗口、最后一个激活的窗口或用鼠标定义的区域,并支持BMP、PCX、TIF、GIF或JPEG格式的保存。Snagit还具有自动缩放、颜色减少、单色转换、抖动等功能,并能将捕获的图像转换为灰度级。此外

    2024年01月21日
    浏览(54)
  • (必备技能)使用Python实现屏幕截图

    在csdn上有很多纯copy,这给我复现带来了很大的麻烦,所以我想根据我的个人找截图的经历记录下来,给未来的自己看,免得忘记了云云。 由于我比较喜欢用opencv处理图像,所以截屏最后都会附带一个使用opencv显示图片的一个步骤。 1、下载pyautogui包 注:使用pyautogui方法获取

    2024年02月07日
    浏览(43)
  • Python 中 Selenium 的屏幕截图

    我们可以使用 Selenium 在自动化 Web 浏览器上使用 Python 脚本执行任务。 我们可以使用不同的方法将浏览器的屏幕捕获为屏幕截图。 本篇文章将介绍如何在 Python 中使用 selenium 捕获自动浏览器的屏幕截图。 selenium 包提供了 save_screenshot() 函数来截取在自动浏览器中打开的网页的

    2024年02月03日
    浏览(42)
  • Ubuntu系统中如何进行屏幕截图

    前言:我的环境是双系统(ubuntu20.04),但应该无论是什么版本的ubuntu都可以实现。 方法: 1.快捷键截图: 在设置里找到键盘快捷键,找到截图目录,就可以看到有关截图的快捷键(可以自己手动更改——单击选项即可) 一般使用 shift+print (print为windows系统中截图的快捷键)进

    2024年02月12日
    浏览(34)
  • Selenium基础篇之屏幕截图方法

    大家好,我是空空star,本篇给大家分享一下Selenium基础篇之屏幕截图方法。 本篇使用的selenium版本如下: Version: 4.8.2 本篇使用的浏览器如下: Selenium截图是一种捕获网页屏幕截图的方式,它可以帮助开发人员在测试网页时捕获问题和错误,以便更好地分析和解决问题。 当测

    2023年04月27日
    浏览(71)
  • chatgpt赋能python:Python屏幕截图:完美的方法记录你的屏幕

    Python作为一种高级编程语言,被广泛用于开发各种应用程序和游戏,其中之一就是屏幕截图。 在本文中,我们将介绍使用Python进行屏幕截图的方法和技巧。 屏幕截图是指将电子屏幕上的图像、文字、视频等内容保存下来的过程。它可以记录您正在计算机中看到的所有内容,

    2024年02月08日
    浏览(46)
  • HarmonyOS实战开发-通过screenshot模块实现屏幕截图 。

    本示例展示全屏截图和屏幕局部截图。 本示例通过screenshot模块实现屏幕截图 ,通过window模块实现隐私窗口切换,通过display模块查询当前隐私窗口。 使用说明: 点击右上角图标打开弹窗,选择截屏,展示全屏截图;选择局部截屏,选择截屏区域,点击右下角完成,展示局部

    2024年04月13日
    浏览(46)
  • Puppeteer让你网页操作更简单(1)屏幕截图

    网页自动化设计爬虫工具 中就使用了Puppeteer进行对网页自动化处理,今天就来看看它是什么东西! 在本教程中,您将学习如何使用JavaScript自动化和 抓取 web。 为此,我们将使用Puppeteer。 Puppeteer 是一个Node库API,允许我们控制无头Chrome。 无头Chrome 是运行Chrome浏览器而不实际运行

    2024年01月18日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包