Как сделать снимок экрана текущего представления моего настольного приложения в Unity с использованием C #? - PullRequest
1 голос
/ 05 июля 2019

У меня есть настольное приложение, которое я сделал на Unity, и я хочу сделать скриншот моего текущего представления в приложении, используя скрипт C #, прикрепленный к основной камере. Пожалуйста помоги.

Я просмотрел другие фрагменты кода, найденные на этой платформе, и, похоже, ничего не помогло.

Ответы [ 2 ]

2 голосов
/ 05 июля 2019

Вы можете использовать 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++;
        }
    }
}

Несколько заметок.

  1. Я использовал дословную строку для определения вашей папки
  2. Папка, в которой вы храните скриншот, должна существовать (если вы хотите создать его в скрипте , вы можете следовать этому ответу )
  3. ПОСЛЕ ЗАПРОСА КОММЕНТАРИИ - 1 : если вы не установите папку, файл будет сохранен в каталоге приложения по умолчанию (который изменяется в зависимости от системы - вы можете проверить его с Application.dataPath )
  4. ПОСЛЕ ЗАПРОСА КОММЕНТАРИИ - 2 : если вы используете один и тот же путь и имя файла, файл будет переопределен, поэтому я добавил способ, позволяющий сохранять несколько снимков экрана, также в разных сеансах, используя PlayerPrefs .
1 голос
/ 05 июля 2019

Вы можете использовать метод CaptureScreenshot, как указано выше, но это может сбить вас с толку, если вы новичок в Unity. Он сохраняет ваши захваченные изображения в пути к файлу, который вы должны передать методу CaptureScreenshot в качестве параметра, например

public class ScreenShotManager : MonoBehaviour {

const string FilePath = @"C:\Users\UserName\Desktop\ScreenShots";

public void CaptureScreenShot() {
    ScreenCapture.CaptureScreenshot(FilePath);
}

void Update(){
    if(Input.GetKeyDown(Keycode.C))
        CaptureScreenShot();
}

этот код показывает, что если вы нажмете клавишу 'c' на клавиатуре, будет зафиксировано, какая основная камера рендерит в данный момент и сохранена в пути к этому файлу

...