개발자가 광고를 넣는 이유는 인앱 결제와 더불어 수익을 낼 수 있는 방법이기 때문입니다.
광고를 넣을 때 보통 구글 애드몹을 이용을 합니다.
이제 애드몹 가입과 광고를 게임에 적용시키는 법에 대해 설명드리겠습니다.
1. 애드몹 가입!
Google AdMob: 모바일 앱 수익 창출
인앱 광고를 사용하여 모바일 앱에서 더 많은 수익을 창출하고, 사용이 간편한 도구를 통해 유용한 분석 정보를 얻고 앱을 성장시켜 보세요.
admob.google.com
구글 아이디만 있으시다면 가입 자체는 어렵지 않습니다.
2. 광고단위 만들기
일단 앱을 클리후 앱 추가를 하시면 됩니다.
그리고 광고 단위를 만드시면 됩니다.
광고 단위를 만드시면 광고ID가 생성을 하게 되는데 꼭 기억을 해두셔야 합니다!!!!
3. 애드몹 플러그인 설치
https://developers.google.com/admob/unity/start
시작하기 | Unity | Google Developers
Unity에서 앱을 제작 중인 AdMob 게시자를 위한 모바일 광고 SDK입니다.
developers.google.com
애드몹 광고를 유니티에서 사용하려면 애드몹 플러그인이 필요합니다.
위에 사이트에서 플러그인을 다운 받아서 설치하시면 됩니다.
패키지를 다운 받으면 유니티 프로젝트에 임포드를 해줍니다.
정상 설치가 되었다면 Asset -> Player Services Resolver -> Android Resolver -> Resolve를 한번 실행 해 줍니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using GoogleMobileAds.Api;
using UnityEngine.SceneManagement;
public class AdmobManager : MonoBehaviour
{
public bool isTestMode;
SlManager slManager;
public AudioClip Clip;
AdSize adSize = new AdSize(320, 50);
public bool IsGo;
public float timeSpan; //경과 시간을 갖는 변수
public float checkTime; // 특정 시간을 갖는 변수
// Start is called before the first frame update
void Start()
{
slManager = GameObject.FindWithTag("SL_Manager").GetComponent<SlManager>();
//LoadBannerAd();
LoadFrontAd();
LoadRewardAd();
timeSpan = 0.0f;
checkTime = 600.0f;
if (slManager.data1[408].Amount == 0.ToString())
{
IsGo = true;
}
else if (slManager.data1[408].Amount != 0.ToString())
{
IsGo = false;
}
}
// Update is called once per frame
void Update()
{
if(int.Parse(slManager.data1[408].Amount) >= 1)
{
timeSpan += Time.deltaTime; // 경과 시간을 계속 등록
if (timeSpan > checkTime) // 경과 시간이 특정 시간이 보다 커졋을 경우
{
IsGo = true;
timeSpan = 0;
}
else if (timeSpan < checkTime) // 경과 시간이 특정 시간이 보다 작아졋을 경우
{
IsGo = false;
}
}
}
AdRequest GetAdRequest()
{
return new AdRequest.Builder().Build();
}
#region 배너광고
const string bannerTestID = "ca-app-pub-3940256099942544/6300978111";
const string bannerID = "ca-app-pub-2916649938494807/7670222442";
BannerView bannerAd;
void LoadBannerAd()
{
SoundManager.instance.SFXPlay("NPlist", Clip);
bannerAd = new BannerView(isTestMode ? bannerTestID : bannerID,
adSize, AdPosition.Bottom);
bannerAd.LoadAd(GetAdRequest());
ToggleBannerAd(false);
}
public void ToggleBannerAd(bool b)
{
if (b)
{
bannerAd.Show();
}
else
{
bannerAd.Hide();
}
}
#endregion
#region 전면광고
const string frontTestID = "ca-app-pub-3940256099942544/8691691433";
const string frontID = "ca-app-pub-2916649938494807/2848468154";
InterstitialAd frontAd;
public void LoadFrontAd()
{
SoundManager.instance.SFXPlay("NPlist", Clip);
frontAd = new InterstitialAd(isTestMode ? frontTestID : frontID);
frontAd.LoadAd(GetAdRequest());
frontAd.OnAdClosed += (sender, e) =>
{
};
}
public void ShowFrontAd()
{
frontAd.Show();
LoadFrontAd();
}
#endregion
#region 리워드 광고
const string rewardTestID = "ca-app-pub-3940256099942544/5224354917";
const string rewardID = "ca-app-pub-2916649938494807/2980136572";
RewardedAd rewardAd;
void LoadRewardAd()
{
SoundManager.instance.SFXPlay("NPlist", Clip);
rewardAd = new RewardedAd(isTestMode ? rewardTestID : rewardID);
rewardAd.LoadAd(GetAdRequest());
rewardAd.OnUserEarnedReward += (sender, e) =>
{
Singleton.instance.Singleton_Amount = slManager.data1[1].Amount;
string Singleton_Coin_Amount;
int int_Singleton_Coin_Amount;
Singleton_Coin_Amount = Singleton.instance.Singleton_Amount;
int_Singleton_Coin_Amount = int.Parse(Singleton_Coin_Amount);
int_Singleton_Coin_Amount += 500;
slManager.data1[1].Amount = int_Singleton_Coin_Amount.ToString();
Singleton.instance.Singleton_Amount = slManager.data1[2].Amount;
string Singleton_Ruby_Amount;
int int_Singleton_Ruby_Amount;
Singleton_Ruby_Amount = Singleton.instance.Singleton_Amount;
int_Singleton_Ruby_Amount = int.Parse(Singleton_Ruby_Amount);
int_Singleton_Ruby_Amount += 50;
slManager.data1[2].Amount = int_Singleton_Ruby_Amount.ToString();
//////////////////////////////////////////////////////////////////
slManager.data1[409].Amount = "1";//리워드 광고 봣는지 판별
/////////////////////////////////////////////////////////////////
slManager._save();
};
}
public void ShowRwardAd()
{
rewardAd.Show();
LoadRewardAd();
}
void LoadRewardAd2()
{
SoundManager.instance.SFXPlay("NPlist", Clip);
Singleton.instance.Singleton_Amount = slManager.data1[408].Amount;
string Singleton_view_Amount;
int int_Singleton_view_Amount;
Singleton_view_Amount = Singleton.instance.Singleton_Amount;
int_Singleton_view_Amount = int.Parse(Singleton_view_Amount);
int_Singleton_view_Amount += 1;
slManager.data1[408].Amount = int_Singleton_view_Amount.ToString();
rewardAd = new RewardedAd(isTestMode ? rewardTestID : rewardID);
rewardAd.LoadAd(GetAdRequest());
rewardAd.OnUserEarnedReward += (sender, e) =>
{
if(int.Parse(slManager.data1[408].Amount) == 5)
{
Singleton.instance.Singleton_Amount = slManager.data1[2].Amount;
string Singleton_Ruby_Amount;
int int_Singleton_Ruby_Amount;
Singleton_Ruby_Amount = Singleton.instance.Singleton_Amount;
int_Singleton_Ruby_Amount = int.Parse(Singleton_Ruby_Amount);
int_Singleton_Ruby_Amount += 20;
slManager.data1[2].Amount = int_Singleton_Ruby_Amount.ToString();
slManager.data1[408].Amount = 0.ToString();
}
slManager._save();
};
}
public void ShowRwardAd2()
{
if(IsGo == true)
{
rewardAd.Show();
LoadRewardAd2();
}
}
#endregion
}
일반적인 광고 삽입 코드입니다.
이제 각각 배너광고, 리워드 광고, 전면 광고 부분을 보면 TestID, ID를 적는 부분이 있는데 TestID는 구글에 치시면 각 광고 종류에 맞는 테스트 ID가 나와있는데 그걸 쓰면 되고, ID는 실제 부여받은 광고를 넣으시면 됩니다. 위에서 기억해야 한다고 한 ID가 여기에 쓰이는것 입니다.
그리고 추가로 앱ID를 부여받으셧을 것입니다.
Assets -> Google Mobile Ads -> Setting으로 들어가시면 저 화면 이 나올것 입니다.
저기서 Android 부분에 앱ID를 쓰시면 됩니다.
그리고 마지막으로 실행을 하시면 이런식으로 광고가 나오게 됩니다.
'게임 개발' 카테고리의 다른 글
유니티 AI 구현하기(Nav mesh Agent) (0) | 2022.01.27 |
---|---|
유니티 AI 구현하기(Nav mesh Agent) (0) | 2022.01.27 |
A* 알고리즘(에이스타 알고리즘)의 실제 예시 (5) | 2022.01.21 |
길찾기 알고리즘 A* Algorithm 에이스타 알고리즘 (0) | 2022.01.21 |
초보 게임 개발자가 직접 만든 게임! (0) | 2022.01.21 |
댓글