Explanation.
현재 게임 화면 캡쳐기능.
현재 스크린 그대로를 readpixel하는 방식이라
OnGUI로 그려지는 UI는 캡쳐X
스크린 사이즈 그대로 RGB24 포멧으로 저장.
ScreenCapture.cs
using UnityEngine;
using System.Collections;
using System.IO;
public class ScreenCapture : MonoBehaviour
{
int height = Screen.height;
int width = Screen.width;
Texture2D captureTexture;
float startTime;
string saveDir = "ScreenShot"; // 저장 폴더 이름.
bool draw = false;
void OnGUI()
{
if (GUI.Button(new Rect(10, 50, 100, 50), "Capture"))
{
StartCoroutine(screenCapture());
}
}
IEnumerator screenCapture()
{
yield return new WaitForEndOfFrame();
captureTexture = new Texture2D(width, height, TextureFormat.RGB24, true); // texture formoat setting
captureTexture.ReadPixels(new Rect(0, 0, width, height), 0, 0, true); // readPixel
captureTexture.Apply(); // readPixel data apply
byte[] bytes = captureTexture.EncodeToPNG();
File.WriteAllBytes(getCaptureName(), bytes);
Debug.Log(string.Format("Capture Success: {0}", getCaptureName()));
}
string getCaptureName()
{
string dirPath = Application.dataPath + "/" + saveDir;
if (!Directory.Exists(dirPath))
{
Directory.CreateDirectory(dirPath);
}
return string.Format("{0}/capture_{1}.png",
dirPath,
System.DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss"));
}
}
스마트폰에 저장을 하려면 어떻게 해야 할까요 ㅠ
답글삭제안드로이드 갤럭시 노트 5입니다 되질 않아서 ㅠ
Application.dataPath -> Application.persistentDataPath 으로 변경하시면 됩니다.
답글삭제