Gameplay Ingredients是一组用于 Unity 游戏的运行时和编辑器工具:一组脚本的集合,可在制作游戏和原型时简化简单的任务。
您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

56 行
1.7 KiB

using GameplayIngredients.Managers;
using UnityEngine;
#if ENABLE_INPUT_SYSTEM
using UnityEngine.InputSystem;
#endif
namespace GameplayIngredients
{
#if !MODULE_SCREENCAPTURE
[WarnDisabledModule("Screen Capture")]
#endif
[AddComponentMenu(ComponentMenu.managersPath + "Screenshot Manager")]
[ManagerDefaultPrefab("ScreenshotManager")]
public class ScreenshotManager : Manager
{
[Header("Capture")]
#if ENABLE_LEGACY_INPUT_MANAGER
public KeyCode ScreenshotKeyCode = KeyCode.F11;
#endif
#if ENABLE_INPUT_SYSTEM
public Key ScreenshotKey = Key.F11;
#endif
[Range(1, 5)]
public int SuperSize = 1;
[Header("File name")]
public string Prefix = "Screenshot";
[Header("Actions")]
public Callable[] OnBeforeScreenshot;
public Callable[] OnAfterScreenshot;
public void Update()
{
#if ENABLE_LEGACY_INPUT_MANAGER
if (Input.GetKeyDown(ScreenshotKeyCode))
#elif ENABLE_INPUT_SYSTEM
if (InputSystemUtility.GetButton(ScreenshotKey).wasPressedThisFrame)
#else
if(false)
#endif
{
#if MODULE_SCREENCAPTURE
var now = System.DateTime.Now;
Callable.Call(OnBeforeScreenshot);
string path = $"{Application.dataPath}/../{Prefix}-{now.Year}{now.Month}{now.Day}-{now.Hour}{now.Minute}{now.Second}{now.Millisecond}.png";
Debug.Log($"Capturing Screenshot (Supersampled to {SuperSize}x) to the file : {path}");
ScreenCapture.CaptureScreenshot(path, SuperSize);
Callable.Call(OnAfterScreenshot);
#else
Debug.Log("Screenshot Manager Cannot Take Screenshot : Unity Module Screen Capture is Disabled.");
#endif
}
}
}
}