본문 바로가기
유니티 & C#

유니티 - 런타임에 이미지 로드하여 스프라이트 생성하기

by 17번 일개미 2023. 11. 1.
728x90

프로젝트에 필요한 스프라이트가 포함되어 있어도 괜찮지만,

빌드된 프로그램이 재빌드 없이 내부 리소스가 교체되어야 할 때에는

지정된 폴더에서 리소스를 읽어 동적으로 로드해야한다.

 

이런 과정에서 동적으로 스프라이트를 생성하는 방법을 적어본다!

 

	private Sprite MakeSprite(string filePath, Vector2 pivot)
	{
		if (string.IsNullOrEmpty(filePath) == true) return null;

		// Get File Name
		FileInfo fileInfo = new FileInfo(filePath);
		// Read image
		byte[] bytes = File.ReadAllBytes(filePath);
           
		// Create Texture
		Texture2D texture = new Texture2D(100, 100);
		texture.LoadImage(bytes);
		texture.name = fileInfo.Name.Split('.')[0];
            
		// Create Sprite
		Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), pivot);
		sprite.name = texture.name;
		return sprite;
	}

 

FileInfo 는 Sprite 의 이름을 지정해주기 위해 가져온다. 이름이 필요없다면 생략해도 되는 과정이다.

 

이미지를 Byte 로 읽어 텍스쳐로 생성해주고, 생성된 텍스쳐를 Sprite.Create() 를 통해 만들어준다.

728x90