스크린샷 촬영 기능 구현중

This commit is contained in:
2025-12-27 00:18:53 +09:00
parent 7f7743fe45
commit d73565c433
2 changed files with 66 additions and 0 deletions

View File

@@ -0,0 +1,64 @@
using UnityEngine;
using System;
using System.IO;
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Imaging;
using Screen = System.Windows.Forms.Screen;
using Graphics = System.Drawing.Graphics;
public class TakeScreen : MonoBehaviour
{
// 캡처할 모니터 인덱스 (0 = 첫번째 모니터)
public int monitorIndex = 0;
[SerializeField]
DirectorySelect directorySelector;
private void Start()
{
// 연결된 모니터 목록
Debug.Log ("displays connected: " + Display.displays.Length);
// Display.displays[0] is the primary, default display and is always ON, so start at index 1.
// Check if additional displays are available and activate each.
for (int i = 1; i < Display.displays.Length; i++)
{
Display.displays[i].Activate();
}
}
void Shot()
{
CaptureMonitor(monitorIndex, directorySelector.selectedFolderPath);
Debug.Log($"Monitor {monitorIndex} 캡처 완료 : {directorySelector.selectedFolderPath}");
}
void CaptureMonitor(int index, string savePath)
{
// 연결된 모니터 목록
Screen[] screens = Screen.AllScreens;
if (index < 0 || index >= screens.Length)
{
Debug.Log("잘못된 모니터 인덱스입니다.");
return;
}
// 해당 모니터 정보
Screen targetScreen = screens[index];
Rectangle bounds = targetScreen.Bounds;
// 비트맵 생성
using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height))
{
using (Graphics g = Graphics.FromImage(bitmap))
{
g.CopyFromScreen(bounds.X, bounds.Y, 0, 0, bounds.Size);
}
// png로 저장
bitmap.Save(savePath, ImageFormat.Png);
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 2f7f5eee1f8301c468e96d926d39fa52