오늘 학습 키워드

최종 팀 프로젝트

오늘 학습 한 내용을 나만의 언어로 정리하기

보스 체력바 만들기

  • 이벤트 버스를 사용 해 보스의 체력이 변화하면 그에 맞게 HP바가 변경되도록 설정
// StageController.cs
/// <summary>  
///  보스가 생성될 때 한 번 불러주면 됨  
/// </summary>  
protected void SettingBossHpBar()  
{  
      
    if (stageData.Stage_id != StageID.Tutorial && stageData.Stage_id != StageID.Village)  
    {  
          
        // 체력바 설정  
        if (DataManager.Instance.MonsterDataList.TryGetMonsterModelData(stageData.Monster_ids[0],  
                out var monsterModel))  
        {  
            UIManager.Instance.GetUI<HUDUI>().SettingBossHp(monsterModel.health);  
            EventBus.Subscribe(EventBusKey.ChangeBossHealth, UIManager.Instance.GetUI<HUDUI>().ChangeBossHpBar);  
        }  
          
        // 타이머 설정  
        UIManager.Instance.GetUI<HUDUI>().SettingMaxTimer(stageData.Time_limit);  
    }  
}
 
// HUDUI.cs
public void ChangeBossHpBar(object data)  
{  
    int currentHp = (int)data;  
    bossHpBar.fillAmount = (float)currentHp / maxBossHp;  
}
  • 같은 방법으로 시간 흐름도 보여줌

퍼널 분석을 해보자

  • UGS를 사용함

우선 Environment 설정

  • Environment 설정 안하면 production에 이벤트 들어가서 겁나 더러워짐

  • 우리는 release-v2-0-0 에 데이터를 수집하기로 함
  • 그러면 평소에는 그냥 production에 넣는거임
  • 유니티 들어가서 Services > General Settings > Environments 감
    • Environment를 그냥 production으로 함 (왜냐면 production에 다 넣어놓고 실제로는 release에서 볼거니까)

커스텀 이벤트를 만들자

  • 유니티 클라우드에 있는 애널리틱스로 들어감
  • 이벤트 관리자 누름
  • Add New 해서 Custom Event를 누름

  • 이벤트를 작성함
  • 그리고 밑에 있는 Event parameters에 Assign Parameter 누름
  • 새로 만들고싶은게 있으면 Add New Parameter 누름

  • 그러면 일단 UGS 상에서는 이벤트 생성 끝
  • 이제 코드를 보면 됨
  • 여기서는 예제로 이 이벤트를 사용하겠음

  • 여기서 나는 stage_id 를 커스텀 파라미터로 사용함
  • 아래는 코드
private void RecordAnalyticsEvent(string eventName, Dictionary<string, object> parameters)  
{  
    if (!IsInit)  
    {  
        return;  
    }  
  
    // CustomEvent는 이름으로만 생성한 뒤 파라미터를 하나씩 추가  
    try  
    {  
        var eventToRecord = new CustomEvent(eventName);  
        foreach (var param in parameters)  
        {  
            eventToRecord.Add(param.Key, param.Value);  
        }  
  
        AnalyticsService.Instance.RecordEvent(eventToRecord);  
        Debug.Log($"Analytics: Logged '{eventName}'.");  
    }  
    catch (Exception e)  
    {  
        Debug.LogError($"Error recording analytics event '{eventName}': {e}");  
    }  
}
 
public void LogStageStart(int stageId)  
{  
    RecordAnalyticsEvent("stage_start", new Dictionary<string, object>  
    {  
        { "stage_id", stageId }  // 커스텀만 이렇게 직접 넣어주면 됨
    });  
}
  • 그리고 여기 LogStageStart 함수를 필요할 때 부르면 됨!
  • 그럼 알아서 이벤트가 등록되고, UGS 이벤트 브라우저에서 확인 가능함. (아래처럼)