스크린샷 촬영 기능 구현중
This commit is contained in:
64
Assets/Scripts/TakeScreen.cs
Normal file
64
Assets/Scripts/TakeScreen.cs
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/TakeScreen.cs.meta
Normal file
2
Assets/Scripts/TakeScreen.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2f7f5eee1f8301c468e96d926d39fa52
|
||||||
Reference in New Issue
Block a user