상세 컨텐츠

본문 제목

0830 TIL - 르탄이 카드 뒤집기 빌드와 광고

스파르타 코딩캠프/'24 Today I Learned

by lucar 2024. 8. 30. 16:00

본문

오늘은 저번 시간에 만들었던 르탄이 카드 뒤집기를 좀더 잘 만들어보자.

 씬에 스타트씬을 추가해준다.

 

UI들을 추가해 요로코롬 만들어주었다.

 

중간에 이미지와 애니메이션을 이용해 

8가지 그림이 계속 돌아가도록 설정했다.

 

 

스타트 버튼을 누르면 실행될 수 있게 메인씬을 로드해주는 기능을 가진 Retry함수를 불러오도록 설정해주자.

 

이번엔 스플래시 이미지를 넣어보자

좌측 상단  Edit에서 프로젝트 세팅으로 들어가준다.

그럼 프로젝트 세팅 창이 뜰 텐데 그 중 Player를 선택한다.

 

이 중에 스플래시 이미지를 선택해보면

이런 화면이 나오는데 프리뷰를 눌러보면?

 

아아.. 익숙한 화면이다...

이 화면에 새로운 이미지를 추가해볼것이다.

우선 이미지 메쉬 타입은 Full Rect로 변경해준다.

Splash 이미지 창에서 Draw Mode를 올 시퀀셜로 바꿔준다.

Logos 아래의 +버튼을 클릭하고 새로 추가할 스플래시 이미지를 추가해준다.

 

그 후 애니메이션을 스태틱으로 설정해 주었다.

실행해보면?

잘 작동하는 것을 내가 확인

 

이제 게임 중 효과음과 배경음악을 넣어보자

 


우선 사운드 폴더를 만들고 줏어온 음악 파일을 집어 넣는다.

 

그리고 애드 컴포넌트를 눌러 오디오 소스를 추가해준다.

카드 스크립트를 수정하자.

 AudioSource audioSource; //오디오 소스에 접근
 public AudioClip clip; //접근 가능한 오디오클립 변수를 선언

 // Start is called before the first frame update
 void Start()
 {
     audioSource = GetComponent<AudioSource>(); //외부의 오디오 소스를 가져와서 적용
 }
public void OpenCard()
{
    if (GameManager.Instance.secondCard != null) return;

    audioSource.PlayOneShot(clip); //원샷으로 플레이하면 한 번에 하나의 노래만 재생 됨

    anim.SetBool("isOpen", true);
    front.SetActive(true);
    back.SetActive(false);

    if(GameManager.Instance.firstCard == null)
    {
        GameManager.Instance.firstCard = this;
    }
    else //비어있지 않다면
    {
        GameManager.Instance.secondCard = this;
        GameManager.Instance.Matched();
    }
}

 

스크립트를 저장하고

 

새로 생긴 Clip에 오디오를 추가해준다.

실행해보면?

 

아뿔싸 GIF파일은 소리가 나지 않는다!

 

나중에 확인하기로 하고 카드를 맞췄을 때의 효과음을 추가하자.

Matched 함수가 있는 게임매니저 스크립트를 열어서 마찬가지로 변수 선언을 해준 뒤

public void Matched() //카드가 일치하는지 확인 하는 함수
{
    if (firstCard.idx == secondCard.idx) //카드가 같다면
    {
        audioSource.PlayOneShot(clip); //오디오 재생
        firstCard.DestroyCard();
        secondCard.DestroyCard();
        cardCount -= 2;
        if (cardCount == 0) GameOver();
    }
    else //카드가 틀리다면
    {
        firstCard.CloseCard();
        secondCard.CloseCard();
    }

    firstCard = null; //오브젝트 값 초기화
    secondCard = null;
}

 

카드가 일치하면 재생하도록 해주자.

 

다시 유니티에서 클립부분에 재생할 효과음을 넣어주자.

 

게임 매니저에도 오디오 소스 컴포넌트 추가하는 걸 잊지말자 갑자기 에러가 떠서 한참을 헤맸다.

 

오디오 매니저 Hierarchy와 스크립트를 작성하자.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AudioManager: MonoBehaviour
{
    AudioSource audioSource;
    public AudioClip clip;

    // Start is called before the first frame update
    void Start()
    {
        audioSource = GetComponent<AudioSource>();
        audioSource.clip = this.clip;
        audioSource.Play();
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

이제 메인씬이 아닌 스타트 씬부터 노래가 재생되게 해보자.

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AudioManager: MonoBehaviour
{
    public static AudioManager instance;

    AudioSource audioSource;
    public AudioClip clip;

    private void Awake()
{
    if (instance == null)
    {
        instance = this; //싱글톤 선언
        DontDestroyOnLoad(gameObject); //로드 시에 이 오브젝트를 파괴하지 않음 == 다른 씬에서도 이어서 재생됨 }
    }
    else
    {
        Destroy(gameObject); //중복으로 선언될 시 하나는 파괴한다.
    }

}


    // Start is called before the first frame update
    void Start()
    {
        audioSource = GetComponent<AudioSource>();

        audioSource.clip = this.clip;
        audioSource.Play();
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

스크립트 작성 후 

스타트 씬에도 오디오 매니저를 만들어주자.

 

이제 게임을 빌드해보자.

상단부 파일에서 빌드 세팅을 클릭해준다.

스타트 씬을 추가하고 순서를 바꿔준 다음 빌드하자

빌드하고 나면 게임 해상도가 바뀔텐데 다시 원상복구 해주자.

 

다시 빌드세팅으로 들어와 좌측 아래의 플레이어 세팅 버튼을 클릭해주자.

들어와보면 회사 이름이나 제품명, 버전을 선택할 수 있으며 다른 곳도 설정해보자.

 

두번째 칸 리솔루션&프레젠테이션 칸을 열러보면 Portrait과 Landscape가 있는데 우리는 폰이라 위아래로 길기 때문에 랜드 스케이프를 꺼주겠다.

이제 Other Setting으로 들어가서

위 사진과 같이 세팅을 변경해 주어야 안드로이드 마켓에 출시가 가능하다.

 

조금 위로 올려보면 경고창이 있는데

com.회사명.제품명 순으로 패키지 이름을 작성해달라고 되어있다.

작성해주자

 

마지막으로 퍼블리싱 세팅으로 들어가보면

이런 화면이 나와있는데 키스토어 매니저로 들어가자

Create New > AnyWhere

AnyWhere를 클릭하면 인증키를 만들게 되는데 임의의 비밀번호를 입력해주자.

 

진짜 마지막으로

안드로이드 Support 툴이 설치 되어있는지 점검하자.

이제 파일을 빌드하자.

빌드설정에서 우측 아래 빌드를 누르면 apk파일로 바뀌게 된다.

 

이제 광고를 추가해보자.

상단 바 Window > General > Service

패키지 매니저에서 Advertisement Legacy를 설치해준다.

 

Configure버튼을 눌러 나오는 창에서 Member > Dashboard를 클릭하면 UnityCloud 브라우저 창이 나오게 된다.

로그인 후

 

단축키에 Unity Ads Monetization을 추가해주고 들어가보자.

좌측에 이런 모습이 나올텐데 광고 활성화를 클릭해준다.

 

순으로 작성 완료한다. 그럼 애플과 안드로이드 스토어에서 사용할 수 있는 키 값이 발급된다.

잊어버리더라도 Setting 메뉴에서 확인 가능하다.

 

그리고 

설정 가이드에서 연동 가이드 보기를 눌러보자.

두번째 창을 누르면 스크립트가 작성되어 있다.

그대로 복사해서 유니티로 돌아가자. (클래스 이름 제외)

AdManager와 AdInitialize 스크립트를 생성 후 스크립트 안에 내용을 그대로 붙여넣고 (클래스 이름 제외)

AdManager에 드래그 앤 드롭 해주자.

 

2개의 public 공간이 생겼는데 방금 나온 두 키값을 입력해주면 된다.

 

이제 광고 연동은 완료되었다.

이제 광고가 실행되게 해보자.

 

사실 이제 내가 뭘 한다기 보다는

여기 설명이 너무 자세해서 그냥 보고 따라하면 된다.

 

빌드 할때는 AdInitialize의 Test 모드를 꼭 끄고 빌드해야 수익이 창출된다.

 

관련글 더보기