728x90
unity3d ์นด๋ฉ๋ผ
- camera capture c#
using System.IO;
using UnityEngine;
using UnityEngine.UI;
public class CameraCapture : MonoBehaviour
{
[SerializeField]
private Button TakePhotoButton;
public int fileCounter;
public KeyCode screenshotKey;
private Camera Camera
{
get
{
if (!_camera)
{
// _camera = Camera.main;
_camera = Camera.main;
}
return _camera;
}
}
private Camera _camera;
void Awake()
{
TakePhotoButton.onClick.AddListener(TakePhoto);
}
private void TakePhoto()
{
Debug.Log("TakePhoto()" + fileCounter);
Capture();
}
// private void LateUpdate()
// {
// if (Input.GetKeyDown(screenshotKey))
// {
// Capture();
// }
// }
public void Capture()
{
RenderTexture activeRenderTexture = RenderTexture.active;
RenderTexture.active = Camera.targetTexture;
Camera.Render();
Texture2D image = new Texture2D(Camera.targetTexture.width, Camera.targetTexture.height);
image.ReadPixels(new Rect(0, 0, Camera.targetTexture.width, Camera.targetTexture.height), 0, 0);
image.Apply();
RenderTexture.active = activeRenderTexture;
byte[] bytes = image.EncodeToPNG();
Destroy(image);
// Mac path :
// File.WriteAllBytes(Application.dataPath + "/Image/" + fileCounter + ".png", bytes);
File.WriteAllBytes(Application.dataPath + fileCounter + ".png", bytes);
fileCounter++;
}
}
- ar camera manager๋ก ์นด๋ฉ๋ผ ์ ๊ทผ
take photo button ํด๋ฆญ ์ ๋ํ๋๋ ์๋ฌ
TakePhoto()0
CameraCapture:TakePhoto()
UnityEngine.Events.UnityAction:Invoke()
UnityEngine.Events.UnityEvent:Invoke()
UnityEngine.EventSystems.EventFunction`1:Invoke(T1, BaseEventData)
UnityEngine.EventSystems.ExecuteEvents:Execute(GameObject, BaseEventData, EventFunction`1)
UnityEngine.EventSystems.StandaloneInputModule:ProcessTouchPress(PointerEventData, Boolean, Boolean)
UnityEngine.EventSystems.StandaloneInputModule:ProcessTouchEvents()
UnityEngine.EventSystems.StandaloneInputModule:Process()
(Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 39)
UnauthorizedAccessException: Access to the path "/private/var/containers/Bundle/Application/30C66757-76DB-4D45-A0BF-0774F1A5EAC8/yatop12.app/Data0.png" is denied.
at System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share, System.Int32 bufferSize, System.Boolean anonymous, System.IO.FileOptions options) [0x00000] in <00000000000000000000000000000000>:0
at System.IO.File.Create (System.String path, System.Int32 bufferSize) [0x00000] in <00000000000000000000000000000000>:0
at System.IO.File.WriteAllBytes (System.String path, System.Byte[] bytes) [0x00000] in <00000000000000000000000000000000>:0
at CameraCapture.Capture () [0x00000] in <00000000000000000000000000000000>:0
at CameraCapture.TakePhoto () [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.Events.UnityAction.Invoke () [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.Events.UnityEvent.Invoke () [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1].Invoke (T1 handler, UnityEngine.EventSystems.BaseEventData eventData) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.StandaloneInputModule.ProcessTouchPress (UnityEngine.EventSystems.PointerEventData pointerEvent, System.Boolean pressed, System.Boolean released) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.StandaloneInputModule.ProcessTouchEvents () [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.StandaloneInputModule.Process () [0x00000] in <00000000000000000000000000000000>:0
UnityEngine.EventSystems.ExecuteEvents:Execute(GameObject, BaseEventData, EventFunction`1)
UnityEngine.EventSystems.StandaloneInputModule:ProcessTouchPress(PointerEventData, Boolean, Boolean)
UnityEngine.EventSystems.StandaloneInputModule:ProcessTouchEvents()
UnityEngine.EventSystems.StandaloneInputModule:Process()
-> applicationWillResignActive()
-> applicationDidEnterBackground()
- UnauthorizedAccessException ๋ฐ์ ์ persistentDataPath ์ฌ์ฉ
Debug.Log(Application.persistentDataPath); File.WriteAllBytes(Application.persistentDataPath +"/Image" +fileCounter + ".png", bytes); fileCounter++;
'TIL (Today I Learned) > Unity' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Unity, MacOS] LeanTween (0) | 2021.09.17 |
---|---|
[Unity]iOS14 ์จ๋ฒ์ ์ฌ์ง ์ ์ฅ (0) | 2021.08.29 |
[Unity] iOS ์จ๋ฒ์ ์ด๋ฏธ์ง ์ ์ฅํ๊ธฐ (0) | 2021.08.28 |