Youtube 리뷰

유니티 무료 쉬운 게임 개발 (조코딩 강의 리뷰) - 광고 붙이기 파트 설명

AllGameDev 2022. 2. 9. 05:32
728x90
반응형

안녕하세요.

이번에 조코딩의 무료 쉬운 게임 개발 강의 - 3시간만에 개발, 출시, 수익화까지 완성 유튜브 강좌를 리뷰해 보도록 하겠습니다.

https://www.youtube.com/watch?v=EqoU1PodQQ4&t=10486s 

게임 만드는 법은 영상에 잘 설명되어 있으니 지나가고, 광고 붙이는 법을 설명해 보도록 하겠습니다.

저는 조코딩의 리소스를 사용하지 않고 assetstore에 있는 flappy버드 에셋을 무료 구매해 광고를 붙여 출시해 보도록 하겠습니다. 

어쩌면 1시간도 안 걸리지 몰라요~~~

먼저 assetstore에 방문하기 전에 먼저 유니티 에디터를 실행시켜 보도록 하겠습니다.

가장 최신 버전이고 베타버전인 2022.1.0b5 베타 버전을 사용해 보도록 하겠습니다.

제 이니셜이 DJ이므로 DJbird로 이름 붙여 보도록 하겠습니다.

그리고 2D(URP)로 생성하여 URP 버전을 적용해 보도록 하겠습니다.

나중에 URP로 업그레이드 할 예정이기 때문에 시작을 URP로 해보겠습니다.

2D(URP)로 DJbird 프로젝트 생성

유니티 DJbird 프로젝트가 생성되어 초기 화면이 나타났습니다.

DJbird 프로젝트

assetstore에서 Flappy Bird를 찾아봅니다.

앗~이럴수가~ Flappy Bird가 지원 중단 예정이라 찾을 수가 없네요.

전 예전에 구입해 놓았기 때문에 설치는 가능한 상태입니다.

프로젝트 임포트 해보도록 하겠습니다.

Flappy Bird가 지원 중단 예정이네요.

일단 Package Manager에서 설치합니다.

Flappy Bird를 Download하여 Import 합니다.

제가 가지고 있는 unitypackage 파일을 공유해 보도록 하겠습니다.

Flappy Bird Style Example Game.unitypackage
0.38MB

와우 잘 실행이 됩니다.

바로 실행한 모습

일단 저희는 세로로 할 예정이기 때문에 가로를 세로로 변경합니다.

Game 탭에서 Simulator를 선택한다음 Samsung Galaxy Note20 Ultra 5G를 선택합니다.

(버전이 업그레이드 되어서 그런지 Sinulator가 자동 삽입 되어 있네요.)

Simulator가 내장되어 있는 모습. Galaxy 기기로 설정

폰트의 위치를 변경합니다.

Text 위치를 가운데로 변경

일단 이 샘플에는 사운드가 없어 아쉽긴 하지만 이 버전으로 조코딩 강좌에 있는 광고 붙이기를 시도해 보도록 하겠습니다.

개인정보처리방침과 admob가입 등은 다음에 하고, 코드 레벨로 광고 창을 붙여 보도록 하겠습니다.

 

구글에서 unity admob을 검색합니다.

unity admob 검색

플러그인 다운로드 버튼을 클릭합니다.

플러그인 다운로드 클릭

다음 파일을 다운받아 설치합니다. 현재 버전이 v6.1.2 입니다.

unitypackage 파일 다운로드

이 unitypackage 파일은 다음 주소로 들어가서 바로 다운로드 할 수 있습니다.

https://github.com/googleads/googleads-mobile-unity/releases/tag/v6.1.2

 

Release Google Mobile Ads Unity Plugin v6.1.2 · googleads/googleads-mobile-unity

Plugin: Fixed Github issue 1786 related to GoogleMobileAdsSettings. Fixed issue related to missing GADUAdNetworkExtras.h file when using some mediation adapters. Built and tested with: Google Pl...

github.com

프로젝트에 임포트 합니다.

unitypackage Import

구글 admob id 설정을 해야 하는데, 일단 했다 치고 넘어가겠습니다.

현재 목표는 admob 광고 화면을 앱에 표시하는게 목표입니다.(테스트로)

이제 코딩을 시작해 볼까요?

먼저 하이라키 창에서 Admob이라는 이름의 게임 오브젝트를 생성합니다.

게임 오브젝트 Add Componet를 클릭하여 BottomBanner라는 script(cs) 를 생성합니다.

그리고 배너 광고 시작하기를 참고하여, BottomBanner.cs 파일에 코드를 입력합니다.

https://developers.google.com/admob/unity/banner

 

배너 광고  |  Unity  |  Google Developers

배너 광고 배너 광고는 화면 안의 한 지점을 차지하는 직사각형 이미지 또는 텍스트 광고입니다. 사용자가 앱과 상호작용하는 동안 화면에 머무르며 특정 시간이 지나면 자동으로 새로고침할

developers.google.com

영상을 참고하여 반응형 광고 최적의 코드를 공유합니다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using GoogleMobileAds.Api;

public class BottomBanner : MonoBehaviour
{
    // Start is called before the first frame update
    private BannerView bannerView;

    public void Start()
    {
        // Initialize the Google Mobile Ads SDK.
        MobileAds.Initialize(initStatus => { });

        this.RequestBanner();
    }

    private void RequestBanner()
    {
#if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/6300978111";
#elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/2934735716";
#else
        string adUnitId = "unexpected_platform";
#endif
        AdSize adaptiveSize = AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(AdSize.FullWidth);
        // Create a 320x50 banner at the top of the screen.
        this.bannerView = new BannerView(adUnitId, adaptiveSize, AdPosition.Bottom);

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();

        // Load the banner with the request.
        this.bannerView.LoadAd(request);
    }
}

다음 코드를 넣고 실행해 보니 광고 Test 가 디스플레이가 잘 됩니다.

하단에 광고창이 붙어 있는 모습

다음으로 전면 광고를 넣어 보도록 하겠습니다.

GAME OVER 가 출력되면 전면 광고를 한번 보여주고 다시 플레이가 진행되도록 해보겠습니다.

 

GameControl.cs 의 BirdDied() 함수에서 동작합니다. 이부분에 전면 광고를 적용해 보도록 하겠습니다.

BirdDied 함수

전면 광고를 로드하는 코드와 전면광고가 닫혔을때 동작하는 코드입니다.

	private void RequestInterstitial()
	{
#if UNITY_ANDROID
        string adUnitId = "ca-app-pub-3940256099942544/1033173712";
#elif UNITY_IPHONE
        string adUnitId = "ca-app-pub-3940256099942544/4411468910";
#else
		string adUnitId = "unexpected_platform";
#endif

		// Initialize an InterstitialAd.
		this.interstitial = new InterstitialAd(adUnitId);

		// Called when the ad is closed.
		this.interstitial.OnAdClosed += HandleOnAdClosed;

		// Create an empty ad request.
		AdRequest request = new AdRequest.Builder().Build();
		// Load the interstitial with the request.
		this.interstitial.LoadAd(request);
	}
	public void BirdDied()
	{
		//Activate the game over text.
		gameOvertext.SetActive(true);
		
		RequestInterstitial();

		StartCoroutine(showInterstitial());

		IEnumerator showInterstitial()
        {
			while(!this.interstitial.IsLoaded())
            {
				yield return new WaitForSeconds(0.2f);
            }
			this.interstitial.Show();
        }

	}
	public void HandleOnAdClosed(object sender, EventArgs args)
	{
	    //Set the game to be over.
		gameOver = true;
	}

전면 광고까지 잘 동작되는 것을 확인해 볼수 있습니다.

앱 배포 및 admob 가입 등은 다음 시간에 살펴 보도록 하겠습니다.

728x90
반응형