Unity/Unity Study

[Unity] '카드 뒤집기 게임' 의 기능 추가

Jee-U 2025. 2. 5. 16:16

 

스타트 씬

 

씬을 하나 추가해준 다음 제목과 시작버튼, 그리고 사진을 넣어주었는데

이 사진은 애니메이션 효과를 이용하여 여러장의 사진이 빠르게 돌아가게 해주었다.

 

짧은 시간안에 여러장의 사진을 넣은 애니메이션 창 모습

사진은 하나하나 손수 드래그 앤 드롭이 아닌 여러장을 한꺼번에 드래그 해오면 위와 같은 모습으로 설정된다.

 

 

스플래시 이미지

Edit > Project Settings > Player 의 Splash Image

게임이 시작될 때 로고 혹은 게임사의 마크를 넣을 수 있는 곳, 프리뷰를 누르면 게임 창에서도 볼수있다.

- 유니티 무료 계정에선 무조건 유니티 로고는 필수적으로 나온다. 

 

 

사운드

 

효과음 추가

효과음은 총 두개를 넣었는데, 카드가 뒤집힐때 나는 소리와 카드를 맞췄을 때 파괴되면서 나는 소리이다.

	// 스크립트에 오디오소스 추가 (효과음)
	AudioSource audioSource;
    public AudioClip clip;
    
  	// 실행하고자 하는 곳의 메서드 혹은 로직(조건문)에 추가
    // 오픈카드는 Card 스크립트에 있으며 해당 메서드에 추가
   		public void OpenCard
	    {
		audioSource.PlayOneShot(clip);
	    }
    
    // 카드가 일치하여 사라지는 로직은 GameManager에 있기에 해당 스크립트의 조건문에 추가
        public void Matched()
        {
        if(firstCard.idx == secondCard.idx)
        {
            audioSource.PlayOneShot(clip);
            firstCard.DestroyCard();
            secondCard.DestroyCard();
        }

 

1회성 효과 재생이기 때문에 실행되어야 하는 곳의 메서드 혹은 로직에 PlayOneShot 을 추가해준다.

게임 오브젝트에 오디오소스 컴포넌트 추가, Clip쪽에 효과음 넣기

근데 미니 프로젝트에선 오디오소스 컴포넌트의 오디오 클립에도 소리를 넣어주었었는데, 그냥 스크립트쪽에만 넣으면 되었었나보다.. 

(실제로 글 작성하면서 오디오 소스 컴포넌트쪽엔 None으로, 스크립트쪽의 클립에만 넣어주었더니 소리가 잘 난다..!)

 

이러한 이유는 Play와 PlayOneShot의 차이점에 있다.

PlayOneShot() : 매개변수로 전달된 클립을 즉시 재생하는 방식으로 컴포넌트와는 별개이기 때문에 None이어도 상관없음

Play는 배경음 추가쪽에..!

 

 

배경음 추가

    AudioSource audioSource;
    public AudioClip clip;

	public static AudioManager instance;

    private void Awake()
    {
        if (instance == null)
        {
            instance = this;
            // 배경음악이 사라지지 않게 함
            DontDestroyOnLoad(gameObject);
        }
        else
        {
        	// 씬이 2개라 씬 이동하는순간 2개가 되어 하나는 파괴
            Destroy(gameObject);
        }
    }

    void Start()
    {
     	 audioSource = GetComponent<AudioSource>();
        
         audioSource.clip = this.clip;
         audioSource.Play();
    }

Play()  AudioSource 컴포넌트에 등록된 AudioClip을 재생하는 방식으로, 컴포넌트에 소리를 꼭 넣어주어야 함

배경음은 1회성 재생이 아니기 때문에 Play()를 사용하였다.

다만 위에서는 audioSource.clip = this.clip; 을 사용하여 컴포넌트에서 직접 지정하지 않았더라도 스크립트에서 설정해줬기 때문에 정상적으로 재생이 가능했다.

효과음을 설정해줬을 때처럼 스크립트에만 음악을 넣어주었다.

처음 진행당시엔 메인씬/스타트씬 전부 배경음악을 넣어주었고 DontDestroyOnLoad를 사용하면서 씬 이동할때 배경음악이 2개가 나오게 되어 하나는 Destroy를 사용해주게 되었는데

이부분은 시작하는 스타트씬에는 AudioManager 오브젝트는 그대로, 두번째 씬인 메인씬의 컴포넌트를 숨기거나 삭제하면 Destroy 없이도 한개만 계속 재생되는걸 확인하였다.

진짜 해보았다.

 

 

Build Setting

 

유니티 내에서만 게임을 실행하는게 아닌 빌드 과정을 거친다.

나는 안드로이드로 진행했으며 추출하고 나면 apk 파일로 저장된다. 안드로이드 폰에 설치하여 진행해주면 끝! 

- 안드로이드 폰이 배터리가 없어 안타깝게 해보진 못했다..

Build Setting 창

참고로 처음엔 빌드가 윈도우(맥, 리눅스)로 되어있을텐데 안드로이드 혹은 다른 것으로 처음 빌드버튼을 누르면 내가 지정해놓았던 해상도가 초기화된다, 파일로 빌드하기 전 다시한번 해상도를 맞춰주자.

 

 

광고 기능까지도 추가해보았으나 광고는 다음에 다시한번 다뤄보려고 한다, 이렇게 늦게나마 게임 만들기 부분은 끝.