Unity 자습서/GamingServices

Gamingservices - ABTestSample #4 재화 만들기

개양반 2023. 2. 25.
728x90

1. 오늘 알아볼 내용

유니티 대쉬보드에서 재화를 만드는 방법에 다룰 예정입니다. 만들 재화는 Coin입니다.

 

2. 사이트 접속

아래의 링크로 유니티 대쉬보드로 이동 후 로그인을 합니다.

https://dashboard.unity3d.com/gaming/login?redirectTo=Lw==

 

Unity Gaming Services

 

dashboard.unity3d.com

 

3. 리소스 생성하기

LiveOps > Economy > Configuration > Add Resource를 클릭합니다.

 

3-1 Type 설정

Economy의 리소스는 4개의 타입이 존재합니다.

이번에는 재화(Currency)를 만들 예정이니 Currency를 눌러줍니다. 

Resource name에 Coin를 입력합니다.

What are your Currency values?는 계정 생성시에 지급하는 금액입니다. 100을 입력하면 신규로 생성한 계정에 100Coin이 자동으로 지급됩니다.

Max balance는 최대 보유 개수입니다. 0 또는 Unlimited를 체크하면 무제한이 됩니다. 

 

JSON 타입으로 사용자 임의의 데이터를 추가할 수도 있습니다.

// 사용자 정의 데이터 예제코드
{
	"damage": 5,
	"strength": 10,
	"durability": 20,
	"assetPath": "/assets/sword.png"
}

 

Create 버튼을 누르면 Coin이 Configration에 생성됩니다.

 

Publish를 눌르면 추가된 Coin이 적용됩니다.

 

4. Economy  구성요소 새로고침

계정이 생성되면 100Coin을 지급하는 재화를 만들었습니다. 재화가 계성 생성시 지급되는지 확인하려면 로그인이 완료된 후 Economy 구성요소를 새로 고침하는 기능을 구현해야 합니다.

4-1 스크립트 작성

4-1-1 EconomyManager.cs

Use Case Samples\AB Test Level Difficulty\Scripts 폴더에 EconomyManager.cs 파일을 만듭니다.

using System;
using System.Threading.Tasks;
using Unity.Services.Economy;
using Unity.Services.Economy.Model;
using UnityEngine;

namespace Unity.Services.Samples.ABTestLevelDifficulty
{
    public class EconomyManager : MonoBehaviour
    {
        // 테스트하기 쉽게 static으로
        public static EconomyManager instance { get; private set; }

        void Awake()
        {
            if (instance != null && instance != this)
            {
                Destroy(this);
            }
            else
            {
                instance = this;
            }
        }
    }
}

 

EconomyManager.cs에 Economy Configration을 새로고침하는 코드를 추가합니다.

        // EconomyManager.cs
        
        public async Task RefreshEconomyConfiguration()
        {
            await EconomyService.Instance.Configuration.GetCurrenciesAsync();
        }

 

4-1-2 ABTestLevelDifficultySceneManager.cs 수정

로그인이 완료되면 경제 구성 새로고침하도록 만듭니다.

ABTestLevelDifficultySceneManager 클래스에 LoadDataFromServices()를 추가합니다.

        // ABTestLevelDifficultySceneManager.cs

        async Task LoadDataFromServices()
        {
            // 경제 구성요소 새로고침 요청
            await EconomyManager.instance.RefreshEconomyConfiguration();
            if (this == null) return;
        }

 

다음은 로그인이 완료된 뒤에 경게 구성요소를 새로고침 하는 코드를 추가합니다. 경제 구성요소 새로고침은 로그인 이후 꼭 호출해야 합니다.

ABTestLevelDifficultySceneManager 클래스의 InitializeServices()를 수정합니다.

        // ABTestLevelDifficultySceneManager.cs
        
        async Task InitializeServices()
        {
            // -- 초기화 코드 생략

            // -- 익명로그인 코드 생략
            
            // 로그인이 완료되면 데이터를 로드한다.
            await LoadDataFromServices();
            if (this == null) return;

            Debug.Log("Initialization and signin complete.");
        }

 

로그아웃 후 새로운 계정을 만들때도 경제 구성 요소를 새로고침 해야 합니다.

ABTestLevelDifficultySceneManager 클래스의 OnProceedButtonPressed()를 수정합니다.

        // ABTestLevelDifficultySceneManager.cs


        public async void OnProceedButtonPressed()
        {
            try
            {
                // -- 로그아웃 코드 생략
                // -- 익명 로그인 코드 생략

                if (this == null) return;
                await LoadDataFromServices();

            }
            catch (Exception e)
            {
                Debug.LogException(e);
            }
        }

 

4-2 스크립트 연결

ABTestLevelDifficultySample 오브젝트에 EconomyManager.cs를 추가합니다.

 

4-3 테스트하기

재생 버튼을 누른 뒤 Sign In As New Player를 눌러 새로운 계정을 만듭니다. 

 

3~5분 후에 유니티 대쉬보드에서 위에서 만든 계정에 100Coin이 지급되었는지 확인합니다. (바로 갱신되지 않음)

 

신규 계정에 100Coin이 지급되었는지 빠르게 확인하고 싶은 분은 아래의 코드로 유니티 콘솔창에서 확인할 수 있습니다.

// 로그인 이후 아무 곳에 넣어서 테스트 해본다.

string currencyID = "COIN";
CurrencyDefinition goldCurrencyDefinition = await EconomyService.Instance.Configuration.GetCurrencyAsync(currencyID);
PlayerBalance playersGoldBarBalance = await goldCurrencyDefinition.GetPlayerBalanceAsync();
Debug.Log(playersGoldBarBalance.balance);

 

오늘은 여기까지!

제 블로그가 만족스럽다면 커피 한잔 값으로 후원을 해주실 수 있어요!

댓글

💲 추천 글