如何使用 C# 在 Unity 中截取桌面应用程序当前视图的屏幕截图?

hol*_*bts 2 c# desktop-application unity-game-engine

我有一个在 Unity 上制作的桌面应用程序,我想使用附加到主摄像头的 C# 脚本截取应用程序中当前视图的屏幕截图。请帮忙。

我浏览了在这个平台上找到的其他代码片段,但似乎没有任何帮助。

Jac*_*ani 5

您可以使用CaptureScreenshot

public class ScreenCapture : MonoBehaviour
{
    //here you can set the folder you want to use, 
    //IMPORTANT - use "@" before the string, because this is a verbatim string
    //IMPORTANT - the folder must exists
    string pathToYourFile = @"C:\Screenshots\";
    //this is the name of the file
    string fileName = "filename";
    //this is the file type
    string fileType = ".png";

    private int CurrentScreenshot { get => PlayerPrefs.GetInt("ScreenShot"); set => PlayerPrefs.SetInt("ScreenShot", value); }

    private void Update()
    {

        if (Input.GetKeyDown(KeyCode.Space))
        {
            UnityEngine.ScreenCapture.CaptureScreenshot(pathToYourFile + fileName + CurrentScreenshot + fileType);
            CurrentScreenshot++;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

一些笔记。

  1. 我使用逐字字符串来定义您的文件夹
  2. 存储截图的文件夹必须存在(如果你想在脚本中创建它,你可以按照这个答案
  3. AFTER COMMENT REQUEST - 1:如果您不设置文件夹,文件将保存在应用程序的默认目录中(根据系统更改 - 您可以从Application.dataPath 中查看)
  4. AFTER COMMENT REQUEST - 2:如果您使用相同的路径和文件名,该文件将被覆盖,因此我添加了一种方法来让您保存多个屏幕截图,也在不同的会话中使用PlayerPrefs