유니티 TIL

유니티 내일배움캠프 24일차 TIL : 배열과 enum/오브젝트 순서/Render Mode

부엥 2024. 10. 17. 21:17


🐱‍👤

오늘의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에 사용)

더보기
Screen Space Overlay / Camera

그래서 2D에서 배경이미지를 제일 뒤에 깔고싶다면,

UI보다는 그냥 스프라이트 오브젝트를 사용하는것이 일반적이다. 

 

 

(사실 이전 팀플에서도 같은 문제가 있었는데 이제야 이해했다...

열심히 설명해줬던 팀원분들 미안합니다^^ ..)