Unity 四种截图方法(相机视图、无UI、有UI、Game窗口)

这篇具有很好参考价值的文章主要介绍了Unity 四种截图方法(相机视图、无UI、有UI、Game窗口)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

之前介绍了三种截图方法(全屏截图、自定义大小截图、无UI截图)

今天介绍一下在Unity 编辑器中进行截图,这种截图的方式是截取Game窗口视角,在编辑器内可以随时使用,而且还可以设置快捷键

Unity 四种截图方法(相机视图、无UI、有UI、Game窗口)

 Unity 四种截图方法(相机视图、无UI、有UI、Game窗口)

 脚本如下:由于此脚本继承的是EditorWindow,使用需要放入Editor文件夹内文章来源地址https://www.toymoban.com/news/detail-511483.html

using System.IO;
using UnityEditor;
using UnityEngine;

public class ScreenCaptureEditor : EditorWindow
{
    private static string directory = "Screenshots/Capture/";
    private static string latestScreenshotPath = "";
    private bool initDone = false;

    private GUIStyle BigText;

    void InitStyles()
    {
        initDone = true;
        BigText = new GUIStyle(GUI.skin.label)
        {
            fontSize = 20,
            fontStyle = FontStyle.Bold
        };
    }

    private void OnGUI()
    {
        if (!initDone)
        {
            InitStyles();
        }

        GUILayout.Label("Screen Capture Tools", BigText);
        if (GUILayout.Button("单张截图"))
        {
            TakeScreenshot();
        }
        GUILayout.Label("当前分辨率: " + GetResolution());

        if (GUILayout.Button("打开文件夹"))
        {
            ShowFolder();
        }
        GUILayout.Label("保存路径: " + directory);
    }

    [MenuItem("Tools/Screenshots/打开窗口 &`", false, 0)]
    public static void ShowWindow()
    {
        GetWindow(typeof(ScreenCaptureEditor));
    }

    [MenuItem("Tools/Screenshots/存储路径 &2", false, 2)]
    private static void ShowFolder()
    {
        if (File.Exists(latestScreenshotPath))
        {
            EditorUtility.RevealInFinder(latestScreenshotPath);
            return;
        }
        Directory.CreateDirectory(directory);
        EditorUtility.RevealInFinder(directory);
    }

    [MenuItem("Tools/Screenshots/单张截图 &1", false, 1)]
    private static void TakeScreenshot()
    {
        Directory.CreateDirectory(directory);
        var currentTime = System.DateTime.Now;
        var filename = currentTime.ToString().Replace('/', '-').Replace(':', '_') + ".png";
        var path = directory + filename;
        ScreenCapture.CaptureScreenshot(path);
        latestScreenshotPath = path;
        Debug.Log($"截图路径: <b>{path}</b> 分辨率: <b>{GetResolution()}</b>");
    }

    private static string GetResolution()
    {
        Vector2 size = Handles.GetMainGameViewSize();
        Vector2Int sizeInt = new Vector2Int((int)size.x, (int)size.y);
        return $"{sizeInt.x}x{sizeInt.y}";
    }

}

到了这里,关于Unity 四种截图方法(相机视图、无UI、有UI、Game窗口)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • unity 相机截图

        /// summary     /// 针对相机的截图     /// /summary     public void CameraScreenShot(){                 Rect rect = new Rect(0,0,Screen.width,Screen.height);         RenderTexture renderTexture = RenderTexture.GetTemporary((int)rect.width,(int)rect.height,0, RenderTextureFormat.ARGB32);                 #region 默认内置

    2024年01月21日
    浏览(44)
  • Unity 类Scene窗口相机控制

    传送门👈

    2024年02月11日
    浏览(35)
  • Unity开发笔记:截取指定位置含有UI的场景截图并输出

    学习记录整理,自用,也希望能帮助到有相同需求的人。 如果直接截全图: 截取指定位置含有UI的场景截图: 例如这种情况下只想要中间的: UI所在的Canvas设置为RenderMode.ScreenSpaceCamera并挂载相机,然后设置该相机的渲染RenderTexture并开始render,注意这里渲染是从屏幕中心扩展

    2024年02月13日
    浏览(39)
  • Unity中相机中显示场景画面,游戏窗口就不显示怎么解决

            最近在学习Unity时碰到了这样一个问题:相机中显示场景画面,切换游戏窗口运行就不显示了,自己在网上查了各种方法都不行,今天自己鼓捣好了,下面给大家分享一下吧,希望对大家有帮助。 问题如下:   1.图层问题  首先考虑图层问题,我们将相机图层切换成与

    2024年02月11日
    浏览(45)
  • 第四十五章 Unity 滚动视图 (Scroll View) UI

    我们介绍一下滚动条 (Scrollbar),它允许用户滚动由于太大而无法完全看到的图像或其他视图。这种效果在我们网页中经常看到,尤其是网页内容太长的时候,就会在垂直方向出现滚动条。当然,有时候也会在水平方向出现滚动条。我们拖动滚动条就能看到剩余的内容。通常情

    2024年02月05日
    浏览(44)
  • Unity2D Sprite尺寸与UI在场景视图和游戏视图显示不一致问题解决方案

    在Unity3D中,当开发2D游戏时,经常会遇到Sprite尺寸与UI在场景视图和游戏视图中显示不一致的问题。这个问题可能导致UI元素变形或者在不同分辨率的设备上显示不正确。本文将为您提供解决这个问题的方法,并附带相应的源代码。 问题分析: Sprite是2D游戏中最常用的图像资

    2024年02月05日
    浏览(92)
  • Unity 2020 URP Camera UI相机问题

    现在正在开发中的项目使用的URP,发现相机结构有变化直接使用场景相机和UI相机无法正常显示。 还是使用两个相机,场景相机使用Base模式,UI相机使用Overlay模式。 在场景相机的Stack中添加UI相机即可。 相当于UI相机叠加在上面,越靠下的相机优先级越高。 这样就可以实现

    2024年02月12日
    浏览(43)
  • MFC第二十八天 WM_SIZE应用,CFrameWnd类LoadFrame的方法,PreCreateWindow窗口预处理,Frame-view窗口视图

    点击相应控件的属性,对其进行动态布局的设置,选择两者,窗口再次进行拉伸就会进行改变。 a)CFrameWnd类偏爱WM_CREATE,因为所有的内部窗口都是代码创建的。 而不像对话框是拖入的。 b)CFrameWnd::rectDefault管理层叠 static const CRect rectDefault; c)LoadFrame内部包含CreateFrame,同时执行

    2024年02月14日
    浏览(78)
  • 【Unity3d】【相机】透视相机UI转换(3DUI+保持屏幕比例)

    0. 基础知识点 正交相机 : 正交相机的的orthographicSize ,是 二分之一的屏幕高度,即 orthographicSize = H/2。 透视相机 : 相机的aspect为相机的视口的宽高比: aspect = W/H 即: W = H * aspect 透视相机的屏幕高度H 随着相机的中心距离和fov变化。公式为: H = distance * tan(fov*0.5) * 2 相机视

    2024年02月04日
    浏览(91)
  • 万物皆可截图:SwiftUI 中任意视图(包括List和ScrollView)截图的通用实现

    在使用 SwiftUI 开发的过程中,有时我们希望能够对特定视图进行截图: 如上图所示: 我们实现了 SwiftUI 5.0(iOS 17)中对任意视图(List、gif动画、ScrollView 等等)进行截图的功能。 从目前来说,大家在 SwiftUI 中截图会面临一些问题: 官方的 ImageRenderer 类兼容性差; 某些截图

    2024年02月16日
    浏览(42)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包