유니티 어필리에이트가 되었다.
딱히 유명한 블로그도 아닌데 제안해주셔서 좋은 기회라 생각해서 하게됐다.
에셋 소개는 예전부터 만들고싶었는데, 사놓고 항상 공부부터 하기 바빠서 따로 소개를 만들지는 못했다.
하루에 한명도 안올때도 있는 블로그라서 어필리에이트가 되었다고 큰 수익을 바라고 쓰는글도 아니고,
정말 내가 잘 쓰고있는 에셋들을 하나하나 소개해보려고 한다.
All In 1 Sprite Shader
유니티로 3D게임을 만드는 분들도 많지만 유니티 엔진은 2D 게임 개발, 그리고 특히 모바일쪽이 상당한 비중을 차지한다.
그리고 쉐이더는 유니티 엔진을 만진다고 바로 쉽게 할수있는 영역은 아니라서 손대기가 쉽지가 않다.
All In 1 Sprite Shader는 그런 쉐이더로 표현가능한 효과들을 쉽게 이용할 수 있게 해준다.
나도 다른 블로그에서 추천받아서 쓰고있는 에셋이고 현재 프로젝트에서도 사용하고 있다.
외곽선과 같은 쉐이더는 인터넷에 많지만, 다른 효과들도 많고 손쉽게 적용이 가능하다는것이 장점이다.
2D 게임을 많이 만드시 분이라면 추천드린다.
데모 씬
에셋 파일에 들어있는 데모씬을 들어가보면 지원하는 쉐이더 효과들을 구경할 수 있다.
움짤로 첨부한 컬러 이펙트와,
UV 이펙트들
그리고 이펙트 콤비네이션 종류들을 확인할 수 있다.
키보드 WASD 혹은 방향키로 마음껏 구경 가능하다.
사용해보기
그냥 간단하게 씬에 방패들을 배치해주었다. (UI가 아닌 SpriteRenderer)
AddAllIn1Shader를 클릭해서 스크립트를 추가해준다.
그리고 화살표 버튼을 누르면 아래에 여러가지 적용 가능한 쉐이더들이 나온다.
이 상태로 그냥 체크만 해주면 적용 끝이다.
[효과 1]
첫번째 방패는 Outline
두번째 방패는 Inner Outline
세번째 방패는 Blur
처리를 해주었다.
[효과 2]
첫번째 방패는 Shake
두번째 방패는 Round Wave
세번째 방패는 Wave
효과를 주었다.
이렇게 클릭으로 쉐이더를 입힐 수 있다.
애니메이터 이용
UI가 아닌 2d 오브젝트(Sprite Renderer) 라면 애니메이터로 이용이 가능하다.
우리가 일반 애니메이터를 쓰는것과 똑같이 녹화버튼을 눌러서 해당 쉐이더를 체크하고 프로퍼티를 애니메이션에 맞게 수정해주면 된다.
애니메이터로 shine 효과와 Fade 효과 적용한 모습이다.
스크립팅
모든 쉐이더 효과를 씬에서, 애니메이터로만 작동시킨다면 제약사항이 많다.
당연히 스크립트를 이용해서도 적용이 가능하다.
실시간으로 아웃라인의 색을 바꾸는 스크립트를 적용해보자.
해당 에셋 폴더 안에 있는 Documentation 파일을 열어보면 스크립팅에 대해 확인이 가능하다.
바꾸고싶은 프로퍼티위에 마우스를 올려보면 스크립팅에서 사용 가능한 프로퍼티명이 뜬다.
값은 float, Color, Texture 정도인데..
각각 Material 의 SetFloat, SetColor, SetTexture 함수를 이용하면 된다.
난 아웃라인의 색깔을 바꾸고싶기 때문에 ' _OutlineColor ' 를 이용해서 컬러를 변경해주면 된다.
public class ChangeShaerColor : MonoBehaviour
{
public Color color;
public SpriteRenderer[] sprs;
/// <summary>
/// 외곽선 색깔 변경
/// </summary>
public void ChangeColor()
{
for(int i=0;i< sprs.Length;i++)
{
sprs[i].material.SetColor("_OutlineColor", color);
}
}
}
스프라이트 렌더러에서 매터리얼을 가져와서 아웃라인의 색깔을 바꿔주는 스크립트를 작성했다.
컬러 매니저를 만들어서 해당 스크립트를 부착해주고,
버튼을 만들어서 컬러 변경 함수를 연결해주었다.
원하는대로 아주 잘 바뀐다.
Enable & Disable
껐다 켰다 하는것은 위 함수를 이용하면 된다.
UI 일때 스크립팅
UI의 Image에 All In 1 Shader를 사용할때는 애니메이터로 제어할 수 없다.
스크립트로만 제어가 가능하다.
위에서 애니메이터로 만든 Shine 효과를 스크립트로 구현해봤다
public class ChangeShaerColor : MonoBehaviour
{
public Color color;
public Image[] images;
private void Start()
{
StartCoroutine(DoShine());
}
IEnumerator DoShine()
{
float temp = 0;
while(true)
{
temp += Time.deltaTime;
if (temp > 1.0f)
{
temp = 0.0f;
yield return new WaitForSeconds(2.0f);
}
for(int i = 0; i < images.Length; i++)
images[i].material.SetFloat("_ShineLocation", temp);
yield return null;
}
}
}
상당히 간단히 대충 짜봤다.
UI도 Image에서 material로 접근해서 값을 변경해주면 끝이다.
UI로도 잘 작동하는것을 볼 수있다.
프리펩
처음에 프리펩 안에서 다 작업을 했는데도 적용이 안되길래 뭔가 했더니..
작업한 매터리얼을 따로 저장을 해주지않아서 발생한 문제였다.
혹시나 나와같은 문제가 생긴다면 저 버튼을 눌러서 꼭 작업한 매터리얼을 저장해주자.
도큐먼트
에셋을 사면 안에 설명서 파일이 있다.
영어지만 핵심 기능 설명은 그렇게 어렵지 않고, 많은 내용이 있으니 꼭 확인하시길 바란다.
'게임 엔진 > Unity' 카테고리의 다른 글
[유니티 3D 에셋 추천] MEGA Cute Pet Zoo (1) | 2023.05.26 |
---|---|
[유니티 에셋 추천] Odin Inspector and Serializer (0) | 2023.05.13 |
Dotween tmp.pro DoText 함수 직접 구현하기 (0) | 2023.04.16 |
유니티 로컬라이제이션 기능 사용해보기 (6) | 2023.02.26 |
유니티 노치, 펀치홀 디자인 대응하기 (0) | 2023.02.26 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!