Do-37 [Feat] 보상형 전면 광고 추가

상점 패널의 첫 번째 요소를 광고 보상으로 설정하고, 클릭할 시 테스트 광고 실행 후 보상 함수 실행.
This commit is contained in:
99jamin 2025-03-17 16:58:31 +09:00
parent 741064824c
commit e0b73803a7
12 changed files with 271 additions and 8 deletions

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f7ccc4a40ba9ce54eb682c4507bd9941
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,22 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a187246822bbb47529482707f3e0eff8, type: 3}
m_Name: GoogleMobileAdsSettings
m_EditorClassIdentifier:
adMobAndroidAppId: ca-app-pub-3940256099942544~3347511713
adMobIOSAppId: ca-app-pub-3940256099942544~1458002511
enableKotlinXCoroutinesPackagingOption: 1
optimizeInitialization: 0
optimizeAdLoading: 0
userTrackingUsageDescription:
validateGradleDependencies: 0
userLanguage: en

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f422e23084618ef4d88e27833b97e5f6
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

8
Assets/KJM/Admob.meta Normal file
View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 83ca459a697bf9c4d8d5050e5f7655e9
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,72 @@
using UnityEngine;
using GoogleMobileAds.Api;
using System;
public class AdManager : MonoBehaviour
{
private RewardedInterstitialAd rewardedInterstitialAd;
private string adUnitId = "ca-app-pub-3940256099942544/5354046379"; // 테스트 광고 ID
void Start()
{
// Google Mobile Ads 초기화
MobileAds.Initialize(initStatus => { Debug.Log("AdMob Initialized"); });
// 광고 로드
LoadRewardedInterstitialAd();
}
// 보상형 전면 광고 로드
public void LoadRewardedInterstitialAd()
{
AdRequest request = new AdRequest();
RewardedInterstitialAd.Load(adUnitId, request,
(RewardedInterstitialAd ad, LoadAdError error) =>
{
if (error != null)
{
Debug.LogError("보상형 전면 광고 로드 실패: " + error);
return;
}
Debug.Log("보상형 전면 광고 로드 성공");
rewardedInterstitialAd = ad;
// 광고 종료 이벤트 설정
rewardedInterstitialAd.OnAdFullScreenContentClosed += HandleAdClosed;
});
}
// 보상형 전면 광고 실행
public void ShowRewardedInterstitialAd()
{
if (rewardedInterstitialAd != null && rewardedInterstitialAd.CanShowAd())
{
rewardedInterstitialAd.Show((Reward reward) =>
{
Debug.Log("코인 지급됨: " + reward.Amount);
// 코인 지급 로직
GrantReward();
});
}
else
{
Debug.Log("보상형 전면 광고가 아직 로드되지 않았습니다.");
}
}
// 광고 닫힘 이벤트 처리
private void HandleAdClosed()
{
Debug.Log("보상형 전면 광고 닫힘, 새로운 광고 로드.");
LoadRewardedInterstitialAd(); // 광고가 닫힌 후 다시 로드
}
// 코인 지급 함수
private void GrantReward()
{
Debug.Log("코인 지금 완료");
// 코인 보상 로직 추가
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 644acbaf5d5791242b26c1b1b0a0ceeb
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,46 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &8786799901643631561
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7455536569977767830}
- component: {fileID: 2424336103342601865}
m_Layer: 0
m_Name: Admob
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7455536569977767830
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8786799901643631561}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &2424336103342601865
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8786799901643631561}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 644acbaf5d5791242b26c1b1b0a0ceeb, type: 3}
m_Name:
m_EditorClassIdentifier:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: c401513426cb83c4e8759c73d8be4c3a
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -491,5 +491,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 4d28917ad20c19e428cbf98ba5609e69, type: 3}
m_Name:
m_EditorClassIdentifier:
adManager: {fileID: 8786799901643631561, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
profileSprites:
- {fileID: 21300000, guid: 307bff9630735f342852f28b1cd5d300, type: 3}

View File

@ -347,6 +347,63 @@ MonoBehaviour:
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 0
--- !u!1001 &523594383261405864
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7455536569977767830, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8786799901643631561, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
propertyPath: m_Name
value: Admob
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: c401513426cb83c4e8759c73d8be4c3a, type: 3}
--- !u!1 &658145525140724706
GameObject:
m_ObjectHideFlags: 0
@ -1690,3 +1747,4 @@ SceneRoots:
- {fileID: 656468223}
- {fileID: 937655098394579964}
- {fileID: 1842188762}
- {fileID: 523594383261405864}

View File

@ -6,6 +6,7 @@ using UnityEngine.UI;
public class ShopItemController : MonoBehaviour
{
ShopItem _shopItem;
public Sprite[] profileSprites;
@ -23,5 +24,12 @@ public class ShopItemController : MonoBehaviour
public void OnClickShopItem()
{
Debug.Log(_shopItem.Name + "의 가격은" + _shopItem.Price);
if (_shopItem.Price == "광고") //첫번째 항목이 광고일 때를 가정하고 작성
{
Debug.Log("첫번쨰");
//보상형 전면 광고 로드
FindObjectOfType<AdManager>().ShowRewardedInterstitialAd(); //FindOf 함수는 추후 수정
}
}
}

View File

@ -106,7 +106,19 @@ public class TestPanelController : MonoBehaviour
{
List<ShopItem> shopItems = new List<ShopItem>(); //테스트 데이터 리스트 생성
for (int i = 0; i < 30; i++)
for (int i = 0; i < 10; i++)
{
if (i == 0) //광고 항목
{
ShopItem shopItem = new ShopItem
{
ItemSpriteIndex = Random.Range(0, 1),
Name = "코인10개",
Price = "광고"
};
shopItems.Add(shopItem);
}
else
{
ShopItem shopItem = new ShopItem
{
@ -116,10 +128,12 @@ public class TestPanelController : MonoBehaviour
};
shopItems.Add(shopItem);
}
}
OpenShopPanel(shopItems);
}
//기보 패널 생성
public void OnGiboPanelClick()
{