07
27

Analytics 클래스의 용도

게임 또는 애플리케이션의 사용자 동작 및 이벤트 데이터를 수집하고 분석하는 데 사용된다.
이를 통해 개발자는 사용자 행동, 게임 플레이 통계, 성과 및 경향 등에 대한 통찰력을 얻을 수 있다.

사용자가 게임 내에서 수행하는 다양한 동작 및 이벤트를 추적하고 기록할 수 있다.
예를 들어, 레벨 완료, 아이템 획득, 업적 달성 등의 게임 관련 이벤트를 추적할 수 있다.
이러한 이벤트 데이터는 Unity Analytics의 대시보드에서 시각화되어 개발자에게 유용한 정보를 제공한다.

Unity Analytics를 사용하려면 Unity 개발자 포털에 프로젝트를 등록하고,
해당 프로젝트의 Analytics 기능을 활성화해야 한다.
그런 다음 Unity Analytics 클래스의 메서드를 사용하여 원하는 이벤트를 추적하고 데이터를 수집할 수 있다.

Analytics.Transaction
(string productId, decimal price, string currency)

인앱 구매와 같은 트랜잭션을 보고한다.

상품의 구매를 추적하여 상품 ID, 가격, 통화 정보를 파라미터로 전달한다.
옵션으로 영수증 구매 데이터와 서명을 전달할 수도 있다.
  • 예제 코드
using UnityEngine;
using UnityEngine.Analytics;

public class InAppPurchaseController : MonoBehaviour
{
    public void PurchaseItem(string itemId)
    {
        // 아이템 구매 트랜잭션 보고
        decimal price = 2.99m; // 가격
        string currency = "USD"; // 통화 코드 (ISO 4217 형식)
        Analytics.Transaction(itemId, price, currency);
    }
}

AnalyticsEvent.CustomEvent
(string customEventName, IDictionary<string, object> eventData)

맞춤 이벤트(유저가 게임에서 수행하는 특정 행위)를 보고한다.

레벨 달성, 씬 변경, 스토어 입장, 게임 오브젝트와 상호 작용 등과 같은 동작을 추적할 수 있다.

커스텀 이벤트의 시각화 툴은 애널리틱스 대시보드에서 볼 수 있으며,
Data Explorer, Funnel Analyzer, Segment Builder가 있다.

커스텀 이벤트는 디폴트로 최대 10개의 파라미터를 가질 수 있다.
전달되는 파라미터가 그 이상인 경우 호출이 실패하며 AnalyticsResult.TooManyItems 값을 반환한다.
  • 예제 코드: 플레이어가 레벨을 클리어할 때마다 점수를 기록하고 해당 정보를 CustomEvent로 보냄
using UnityEngine;
using UnityEngine.Analytics;
using System.Collections.Generic;

public class LevelManager : MonoBehaviour
{
    private int currentLevel = 1;
    private int playerScore = 0;

    public void LevelComplete()
    {
        // 레벨을 클리어했을 때 호출되는 함수
        // 플레이어 점수를 기록하고 CustomEvent로 보냄

        // 플레이어의 점수를 증가시킴
        playerScore += 100; // 레벨 클리어 시 100점 추가

        // CustomEvent에 포함시킬 정보를 담는 Dictionary 생성
        Dictionary<string, object> eventData = new Dictionary<string, object>();
        eventData.Add("Level", currentLevel); // 현재 레벨 정보를 저장
        eventData.Add("Score", playerScore); // 플레이어의 점수 정보를 저장

        // CustomEvent로 보낼 이벤트 이름과 Dictionary 데이터 전송
        Analytics.CustomEvent("LevelComplete", eventData);
    }
}
  • 참고로 Analytics.Custom 함수도 있는데, 이벤트의 이름만 기록하고 추가 데이터를 포함하지 않는다. Analytics.Custom("TutorialCompleted");처럼 말이다.

AnalyticsEvent.LevelComplete
(string levelName, IDictionary<string, object> eventData = null)

string levelName
: 완료된 레벨의 이름을 나타낸다. 필수 파라미터이다.

Dictionary<string, object> eventData
: 추가적인 이벤트 데이터를 담은 딕셔너리이다. 이 딕셔너리를 사용하여 원하는 데이터를 추가로 전달할 수 있다. 예를 들어, 레벨의 점수, 소요된 시간 등을 포함할 수 있다. 레벨의 완료를 추적한다. 레벨 이름을 파라미터로 전달한다.
  • 예제 코드
Dictionary<string, object> eventData = new Dictionary<string, object>();
eventData["Score"] = 1000;
eventData["Time"] = 120.5f;

AnalyticsEvent.LevelComplete("Level1", eventData);

Analytics.SetUserGender(Gender gender)

유저의 성별 정보를 설정한다.
  • 예제 코드
using UnityEngine;
using UnityEngine.Analytics;

public class PlayerProfile : MonoBehaviour
{
    public void SetGender(bool isMale)
    {
        Gender gender = isMale ? Gender.Male : Gender.Female;
        Analytics.SetUserGender(gender);
    }
}

Analytics.SetUserBirthYear(int birthYear)

유저의 출생 연도를 설정한다.
  • 예제 코드
using UnityEngine;
using UnityEngine.Analytics;

public class PlayerProfile : MonoBehaviour
{
    public void SetBirthYear(int year)
    {
        Analytics.SetUserBirthYear(year);
    }
}

Analytic.limitUserTracking

사용자 추적을 제한하는데 사용된다.

이 설정은 사용자의 개인정보 보호와 관련하여 옵트아웃(사용자 추적 거부)을 적용하고자 할 때 활용한다.

일부 국가나 지역에서는 개인정보 보호에 대한 규제가 있을 수 있기 때문에 사용자의 동의를 얻거나,
사용자가 추적을 거부할 수 있도록 옵트아웃 기능을 제공하는 것이다.

Analytic.limitUserTracking을 true로 설정하면, Unity Analytics는 사용자의 식별 정보를 수집하지 않고,
개인정보 보호를 위해 데이터를 익명화하여 처리한다.
// 사용자의 동의를 얻은 경우에만 추적을 활성화
if (userConsent)
{
    // 사용자의 동의를 얻었으므로 추적을 활성화하고 데이터를 전송
    Analytic.limitUserTracking = false;
    Analytics.enabled = true;
}
else
{
    // 사용자의 동의를 얻지 못했으므로 추적을 제한하고 데이터를 익명화하여 처리
    Analytic.limitUserTracking = true;
    Analytics.enabled = true;
}
COMMENT