赞
踩
之前介绍了三种截图方法(全屏截图、自定义大小截图、无UI截图)
今天介绍一下在Unity 编辑器中进行截图,这种截图的方式是截取Game窗口视角,在编辑器内可以随时使用,而且还可以设置快捷键
脚本如下:由于此脚本继承的是EditorWindow,使用需要放入Editor文件夹内
- 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}";
- }
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。