🐱👤
오늘의TIL
1) 배열과 enum사용해보기
2) Canvas의 오브젝트 순서와 레이어의 순서
3) Canvas의 Render Mode
분명 뭔가 많은걸 한 것 같은데???
정리된 건 질문하면서 정리해 둔 내용이 다다.
바로바로 써두지 않으면 안쓰게 돼.
그나마 빨리 끝날거라 생각한 부분에서 너무 많은 시간이 들어가고있다.
😶
1) 배열과 enum 사용해보기
SoundManager스크립트에서 사용해보려고 튜터님께 질문했다!
배열과 enum을 비교하면서 설명해주셨다
SoundManager스크립트에서는
public AudioClip[] sfxClips; |
하면 이렇게 됨
enum을 쓰면 클래스 밖에 이렇게 해주고
public enum Sfx { Jump, DoubleJump, Item, Hit } |
얘는 enum을 쓸 때
public void PlaySFX(Sfx sfxClip) { int clipIndex = (int)sfxClip; AudioClip clip = sfxClips[clipIndex]; (어쩌고저쩌고) } |
얘는 배열을 쓸 때
public void PlaySFX(int clipIndex) { AudioClip clip = sfxClips[clipIndex]; (저쩌고어쩌고) } |
그리고
다른 스크립트에서 SoundManager를 가져와서 쓸 때에는
(UI나Game매니저 스크립트등 에서)
eunm을 쓰면
SoundManager.instance.PlaySFX(Sfx.Jump); |
-정해둔 이름을 씀(미리 int로 바꿔둠)
배열을 쓰면
SoundManager.instance.PlaySFX(0); |
-배열의 순서를 씀(sfx clips의 0번째)
그래서 배운것(enum) 으로 bgm에 적용하여 다시 수정해보았다
오디오 클립을 받아오는 방식이 달라져서 음량조절 부분도 전부 수정해줘야했다.😰
(그런데 역시 아무래도 Bgm, Sfx 따로 조절하는게 좋을 것 같아서 또 수정할지도..)
그리고 실행하면!
Audio Source가 생기면서, AudioClip에 위 Bgm Clips에 넣어놓은 녀석이 들어가서 나오게 된다.
소리도 잘 나오고, 조절도 잘 된다.
2) Canvas의 오브젝트 순서와 레이어의 순서
하이어라키 창에서
한 Canvas에 들어있는 것들은 위에있는 것 부터 렌더링 된다.
그걸 앞에 있는 카메라가 찍는거니까 제일 위에 있는 오브젝트가 가장 뒤(밑)에 있다.
(그치만 Background를 UI에 만들어서는 안됐다..UI만 있는? 화면에서는 괜찮았는데..)
그렇다면 Canvas가 여러 개 있을 때에는 어떻게 되지?
하이어라키창의 순서와 상관 없이 Canvas의 Sorting Layer와 Order in Layer의 값에 영향을 받는다.
값이 작을수록 먼저 렌더링 된다.
먼저 렌더링된다 = 뒤(밑)에 있다.
3) Canvas의 Render Mode
Screen Space Overlay / Camera
Screen Space- Overlay는
UI가 제일 앞에 렌더링 된다. 카메라의 영향을 받지 않는다.
Screen Space- Camera는
카메라를 통해 렌더링된다. 카메라의 영향(위치, 각도)을 받는다.
(보통 3D에서의 UI에 사용)
그래서 2D에서 배경이미지를 제일 뒤에 깔고싶다면,
UI보다는 그냥 스프라이트 오브젝트를 사용하는것이 일반적이다.
(사실 이전 팀플에서도 같은 문제가 있었는데 이제야 이해했다...
열심히 설명해줬던 팀원분들 미안합니다^^ ..)
'유니티 TIL' 카테고리의 다른 글
유니티 내일배움캠프 26일차 TIL : 팀플 (0) | 2024.10.21 |
---|---|
유니티 내일배움캠프 25일차 TIL : 깃허브^_^ (0) | 2024.10.18 |
유니티 내일배움캠프 23일차 TIL : 팀플 (0) | 2024.10.16 |
유니티 내일배움캠프 22일차 TIL : 꾸준실습과 팀 프로젝트(SoundManager 만들기) (0) | 2024.10.15 |
유니티 내일배움캠프 21일차 TIL : 개인과제 제출 (1) | 2024.10.14 |