이전 게시글에서 부분캡쳐한 이미지를 PC에 저장했었는데요.
이번에는 저장한 이미지를 불러와 게임에 적용시켜보겠습니다.
/// <summary>
/// PhotoData 클래스의 정보로 PC에 저장된 PNG파일을 Image오브젝트의 이미지를 변환하는 함수
/// </summary>
private void SetImageByPhotoData(PhotoData photoData)
{
if (photoData != null)
{
//파일이 저장된 위치와 파일이름을 붙여 저장
string path = photoData.PathFloder + photoData.FileName;
//저장 위치에 있는 PNG파일을 읽어 Byte배열로 변환후 저장
byte[] bytes = File.ReadAllBytes(path);
Texture2D tex = new Texture2D(2, 2);
//byte[]로 변환된 PNG파일을 읽어 이미지로 변환
tex.LoadImage(bytes);
if (_image != null)
{
//재질의 메인 텍스처를 위에서 읽어들인 이미지로 변경
_tempMat.mainTexture = tex;
//재질을 null로 변경했다 다시 원래대로 변경한다. 이렇게 새로고침을 해야 이미지를 바꾼게 적용됨
_image.material = null;
_image.material = _tempMat;
}
else
{
Debug.LogError("사진을 보여줄 이미지 컴포넌트가 없습니다.");
}
}
else
{
_image.material = null;
}
}
PhotoData 클래스
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[Serializable]
public class PhotoData
{
[SerializeField] private string _fileName;
public string FileName => _fileName;
[SerializeField] private string _date;
public string Date => _date;
private string _pathFloder;
public string PathFloder => _pathFloder;
public PhotoData(string fileName, string pathFloder)
{
_fileName = fileName;
_date = DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss");
_pathFloder = pathFloder;
}
}
PhotoData클래스는 안써도됩니다!
파일 저장위치, 파일 명만 알면 쉽게 불러올 수 있습니다!
결과
'Unity 공부' 카테고리의 다른 글
[Unity] 컷 아웃 마스크(Cutout Mask) (0) | 2024.01.24 |
---|---|
[Unity] Behavior Tree(BT) (0) | 2023.12.11 |
[Unity] FSM 유한 상태 기계 (0) | 2023.11.21 |
[Unity] 가중치 랜덤 뽑기 (0) | 2023.11.05 |
[Unity] 부분 화면 캡처 기능 (0) | 2023.10.31 |