내일배움캠프/TIL

[내배캠][Unity6기][TIL] 5. Unity 주변 기능 학습(1~3)

binary는 호남선 2024. 9. 11. 20:41

Preview

- 여러 개의 이미지 반복해서 교체하는 애니메이션 만들기
- 스플래시 이미지
- AudioSource
- 특정 조건에서 사운드 한번 재생하기
-- PlayOneShot()
- BGM 재생하기
-- Play()


여러 개의 이미지 반복해서 교체하는 애니메이션 만들기

1. 반복할 이미지 오브젝트 생성(Create - UI - Image)

2. 애니메이션 만들고 오브젝트에 붙이기

3. 애니메이션 창에 반복할 이미지 전체를 한번에 끌어오기(ex) img01~img07

4. 오른쪽의 파란 바를 끌어서 적당한 시간으로 맞추기

* 바를 오른쪽으로 끌어 시간 간격이 넓을수록 이미지 느리게 변경

* Keyframe(다이아몬드) 모두 선택하여 한번에 범위 조절하기

스플래시 이미지

- 스플래시 이미지 : 앱을 켰을 때 가장 처음 화면에 떴다가 사라지는 이미지

* 메뉴: Edit > Project Settings > Player > Splash Image

설정 설명
Splash Screen 스플래시 화면을 표시하기 위한 설정
Show Splash Screen   기본으로 활성화. 애플리케이션 시작 시 스플래시 화면을 표시하지 않으려면 이 설정을 비활성화 (Unity 개인 플랜은 비활성화 불가)
Preview 게임 뷰에서 스플래시 화면 미리보기. 미리보기는 게임 뷰와 같은 해상도와 종횡비로 표시.
Animation 스플래시 화면이 화면에 나타나고 사라지는 방식에 대한 설정.
  Static 애니메이션을 미적용.
  Dolly 로고와 배경을 확대/축소하여 비주얼 돌리 효과 생성. (기본 설정)
Logos   스플래시 화면의 로고를 커스터마이즈하기 위한 설정.
Show Unity Logo 기본으로 활성화. 스플래시 화면에 Unity 로고를 표시하지 않으려면 이 옵션을 비활성화.  (Unity 개인 플랜은 비활성화 불가)
Draw Mode 스플래시 화면에 로고가 나타나는 순서를 선택하는 모드.
  Unity Logo Below 로고 리스트의 모든 로고 아래에 Unity 로고를 표시.
  All Sequential 로고 리스트의 모든 로고와 함께 Unity 로고를 순차적으로 표시.
Logos 스플래시 화면에 포함할 로고. 각 로고는 스프라이트 에셋이어야 함. 전체 스프라이트를 로고로 사용하려면 스프라이트 모드를 Single로 설정. 로고의 종횡비를 변경하고 싶으면 스프라이트 모드를 Multiple로 설정한 후 스프라이트 에디터로 크기를 편집.

더하기(+) 버튼과 빼기(-) 버튼을 사용하여 로고를 추가하거나 제거

로고의 순서를 변경하려면 리스트에서 로고를 드래그.

로고 표시 간격을 늘리려면 로고 리스트에 스프라이트 에셋이 할당되지 않은 엔트리를 추가.
  Logo Duration 각 스프라이트 에셋이 화면에 표시되는 시간을 설정. 2–10초 범위의 값을 사용.

참고 : https://docs.unity3d.com/kr/2022.3/Manual/class-PlayerSettingsSplashScreen.html

AudioSource

- Scene에서 AudioClip을 재생하는 컴포넌트

- Play On Awake : 옵션을 활성화하면 씬이 실행되는 시점에 사운드 재생 시작. 비활성화하면 스크립팅에서 Play()명령을 사용하여 사운드 재생 시작.

참고 : https://docs.unity3d.com/kr/2022.3/Manual/class-AudioSource.html

특정 조건에서 사운드 한번 재생하기

1. 사운드가 재생될 조건 로직이 어느 스크립트에 있는지 확인

2. 스크립트가 붙어있는 오브젝트에 AudioSource 컴포넌트 붙이기

3. 스크립트에 코드 추가

public AudioClip clip;	// 재생한 클립 가져올 수 있도록 필드 열기
AudioSource audioSource;

void Start()
{
    // 오디오소스 컴포넌트 가져오기
    audioSource = GetComponent<AudioSource>();
}
...
// 소리가 재생되어야할 순간에 코드 작성
audioSource.PlayOneShot(clip);

4. Editor에서 clip 필드에 재생할 AudioClip Drag & Drop

PlayOneShot()

public void PlayOneShot(AudioClip clip, float volumeScale = 1.0F);

- 인자로 받은 AudioClip을 한번 재생

- 다른 AudioClip이 실행중이더라도 중첩하여 재생 가능

BGM 재생하기

1. Hierarchy에 빈 오브젝트 AudioManager 생성

2. Scripts 폴더에 AudioManager.cs 생성

3. AudioManager 오브젝트에 AudioManager 스크립트 붙이기

4. 스크립트 작성

public static AudioManager Instance;	// 싱글톤화

AudioSource audioSource;
public AudioClip clip;	// 사용할 BGM 클립 받기

private void Awake()
{
    // 인스턴스 없으면 생성하고 파괴되지 않도록 설정
    if(Instance == null)
    {
        Instance = this;
        DontDestroyOnLoad(gameObject);
    }
    // 이미 인스턴스 있으면 생성한 인스턴스 파괴
    else
    {
        Destroy(gameObject);
    }
}
void Start()
{
    audioSource = GetComponent<AudioSource>();

    audioSource.clip = this.clip;
    audioSource.Play();	// 계속 재생
}

5. Editor에서  clip 필드에 재생할 AudioClip Drag & Drop

6. BGM 재생하고 싶은 모든 Scene에 같은 작업

* AudioManager 인스턴스는 다른 Scene으로 넘어가더라도 파괴되지 않고 유지

Play()

public void Play(ulong delay = 0);

- 인자로 받은 오디오 클립 재생

- 다른 AudioClip과 중첩하여 재생 불가