2019년 9월 23일 월요일

Unity - Firebase 연동 (Analytics, AdMob)

버전 : firebase_unity_sdk_6.5.0.zip

게임에서 통계 측정 및 광고 추적을 위해 Firebase 을 연동한다.
앞서 [Unity - GPGS 와 Admob 연동 및 배포 준비 작업] 연동 이후에 작업을 진행 한다.

유니티에 Firebase를 연결하는 정보는 다음 사이트에 정리되어 있다.
https://firebase.google.com/docs/unity/setup?hl=ko#available_libraries
- ADmob 연동은 별도의 unitypackage 설치 없이 웹 연결을 통해 진행 된다.


1. Firebase 패키지 추가

1-1. 프로젝트 생성

  • 홈페이지 접속
  • [프로젝트 만들기] 버튼을 선택해 생성 시도
  • 생성되어 있는 프로젝트 중 연동에 필요한 프로젝트 선택
  • 약관 선택 후 [계속]
  • "Google 애널리틱스" 사용 설정은 On 으로 지정
    - 애널리틱스 위치 : 대한 민국
    - 약관 설정
  • [계속] 버튼을 선택하면 프로젝트가 생성 됨

1-2. 앱을 추가하여 시작

  • 좌측 [Project Overview] 선택 해 Home 으로 이동
  • 유니티 아이콘을 선택해 "앱을 추가하여 시작" 진행
  • Unity 앱에 Firebase 추가 시작
    - iOS와 Android 동시 출시의 경우 둘다 등록 해야 됨
    - Register as Android app 체크
    - 패키지 이름 : 설정한 패키지 이름 작성
    - 앱 닉네임 : 게임 이름 작성
  • [다음] 버튼으로 설정 이동

1-3. 구성파일 다운로드

  • google-services.json 파일을 다운로드
  • 다운로드 한 파일을 unity 프로젝트 Asset폴더 Root로 이동
    (Assets 폴더 내의 원하는 위치에 Firebase 구성 파일을 배치 가능)
  • [다음] 버튼으로 설정 이동

1-4. Firebase SDK 추가

  • 유니티 패키지를 다운받음
  • firebase_unity_sdk_6.5.0.zip 버젼을 다운로드하여 진행
  • [다음] 버튼으로 설정 이동

1-5. 완료 단계

  • 설정이 완료 됨.
  • "콘솔로 이동" 을 선택해 설정을 종료

1-6. Project Overview 정보 

  • 페이지의 앱 설정에서 등록된 앱 정보가 유니티가 아닌 안드로이드로 표시 된다. 
  • 정보를 확인 하면 통신을 대기 하는 상태가 표시 된다.
  • 이 표시는 Analytics SDK를 추가해 빌드를 한 뒤 실행을 한 번 해야 처리 된다.
  • 정상 처리 시 - "앱에 Firebase를 추가했습니다." 라고 표시된다.
  • 우선은 현 상태로 유지하고 아래 항목을 진행 한다.

1-7. SHA-1 인증서(번외, 필요시)

  • 안드로이드 앱 등록 시 SHA-1 디버그 인증서를 요구 한다. 
  • 디버그는 인증서는 debug.keystore 파일을 의미하고, 보통 C:\Users\user\.android 폴더에 위치한다. 
  • 명령어 프롬프트를 이용해 자바가 설치된 bin 폴더로 이동 
  • keytool -exportcert -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore 명령어를 입력하면 값을 얻을 수 있다.
    (디버그에는 password가 없으므로 Enter 키 입력)
  • 실제 SHA 인증서 지문 = GooglePlayConsole에서 업로드 증명서의 SHA-1 값을 사용 하면 된다. 


2. 사전 준비

2-1. 데이터 준비

  • SDK 다운로드 : URL
  • 유니티의 .Net 버전을 4.x 로 설정
  • 다운로드한 SDK에서 dotnet4 폴더 unitypackage 를 확인
  • 애널리틱스를 사용하기 위해 FirebaseAnalytics.unitypackage 파일 저장

2-2. Unity 프로젝트에 Firebase 추가

  • 정보 : https://firebase.google.com/docs/unity/setup?hl=ko
  • 1~4단계는 진행한 "Firebase 패키지 추가"와 동일한 내용
  • 5단계 부터 진행한다.
  • FirebaseAnalytics.unitypackage 파일 import 진행
    (무언가 확인 윈도우가 뜰 때 yes 했음)

2-3. Google Play 서비스 버전 요구사항 확인

        Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
            var dependencyStatus = task.Result;
            if (dependencyStatus == Firebase.DependencyStatus.Available)
            {
                // Create and hold a reference to your FirebaseApp, 
                // FirebaseApp에 대한 참조를 작성하고 유지하십시오.
                // where app is a Firebase.FirebaseApp property of your application class.
                // 여기서 app은 애플리케이션 클래스의 Firebase.FirebaseApp 속성입니다.

                //   app = Firebase.FirebaseApp.DefaultInstance;

                // Set a flag here to indicate whether Firebase is ready to use by your app.
                // Firebase를 앱에서 사용할 준비가되었는지 표시하려면 여기에 플래그를 설정하십시오.
                Debug.Log("Firebase 초기화 완료");
            }
            else
            {
                UnityEngine.Debug.LogError(System.String.Format(
                  "Could not resolve all Firebase dependencies: {0}", dependencyStatus));
                // Firebase Unity SDK is not safe to use here.
            }
        });
  • 앱 시작 시 AnalyticsManager를 생성하고 "Start()" 에 코드 추가


3. Analytics 추가

3-1. 유니티 설정

  • 이벤트 로그 등에 대한 내용 작성이 필요
  • >>>작성중<<<


4. ADMob 연동

4-1. 연동 방법

  • Firebase 페이지 이동
  • 연결하려는 프로젝트를 선택해 페이지 이동
  • 좌측 상단의 Project Overview 우측에 있는 "톱니바퀴"(설정) 버튼 선택
  • 프로젝트 Settings 화면에서 [통합] 페이지를 선택
  • ADmob 의 앱 설정에 firebase 연결 버튼이 없다.
    (현재 위 설정을 적용 못하고 있음)



2019년 9월 19일 목요일

국비 교육 : 게임 프로그래밍 131일

131일 차 교육 내용 메모를 옮겨 본다.
게임 엔진 유니티를 이용한 VR 포트폴리오 작업을 진행했다.


싱글턴을 이용한 매니저 제작
- 데이터 관리를 위한 table loader
- Scene 이동을 위한 Scene controller


이전과 마찬가지로 교육 시간에 포트폴리오 작업을 진행한 것 같다.
메모 내용으로 보아 관리 클래스를 제작한 것으로 보인다.

국비 교육 : 게임 프로그래밍 130일

130일 차 교육 내용 메모를 옮겨 본다.
게임 엔진 유니티를 이용한 VR 포트폴리오 작업을 진행했다.


네비매쉬 에이젼트의 SetDestination은 한번 지정하면 지정된 이동 값으로 목표 지점까지 이동한다.
즉 apdote에 넣을 필요가 없다. 1회 입력 시 저장해두고 이동

네비매쉬 에이젼트를 isStopped = false / true 로 끄고 켤 수 있다.


교육 시간에 포트폴리오 작업을 진행한 것 같다.
메모 내용으로 보아 네비매쉬를 이용한 Monster 이동 처리 작업을 진행한 것 같다.

2019년 9월 18일 수요일

국비 교육 : 게임 프로그래밍 129일

129일 차 교육 내용 메모를 옮겨 본다.
게임 엔진 유니티를 이용한 VR 포트폴리오 작업이 진행됐다.


UI 정보 출력
- 몬스터 머리 위 UI 띄우기
- 월드 좌표를 이용해 UI Scale 되도록 캔버스를 구성해 화면에 띄운다.


메모 내용으로 보아 별도의 교육 없이 VR 포트폴리오 작업을 진행한 것 같다.
UI를 이용해 몬스터 이름 생성하기 기능을 구현한 것 같다.

국비 교육 : 게임 프로그래밍 128일

128일 차 교육 내용 메모를 옮겨 본다.
게임 엔진 유니티를 이용한 VR 포트폴리오 작업이 진행됐다.


포트폴리오 작업
- 피격 시 처리, 공격 행동 등에 대한 개인 작업 진행.


이외 작성된 교육과 관련된 메모는 없는 것으로 보아서, 온종일 포트폴리오 작업을 진행한 하루였던 것 같다.

2019년 9월 17일 화요일

국비 교육 : 게임 프로그래밍 127일

127일 차 교육 내용 메모를 옮겨 본다.
게임 엔진 유니티의 오디오 믹서에 대한 내용이 메모로 작성되어 있다.


오디오 믹서의 FindMatchingGroups(" ~ ");
- " ~ "에 작성된 오디오 그룹의 본체 및 하위를 배열화한다.
- ~ 에는 group의 name이 작성되며, 작성된 group을 기준으로 하위 그룹을 배열로 만드는 식이다.

사운드 믹서에서의 변수 등록을 주의하자


ToString("0,##"); 형태로 표시되는 정보를 제어할 수 있다.


이처럼 사운드 믹서에 대한 짧은 내용과 String 처리에 대한 내용이 메모로 작성되어 있었다.
별도로 작성된 Sample 프로젝트도 없는 것으로 보아 남은 시간 VR 포트폴리오를 진행하지 않았나 싶다.

국비 교육 : 게임 프로그래밍 126일

126일 차 교육 내용 메모를 옮겨 본다.
교육은 했지만, 작성된 메모 내용이 없다.


아마도 VR 포트폴리오 작업을 진행했을 것 같다.

메모와 샘플 프로젝트가 없는 것으로 보아 각자 포트폴리오를 작업하는 것으로 교육을 진행한 것으로 생각된다.


Unity - Firebase 연동 (Analytics, AdMob)

버전 : firebase_unity_sdk_6.5.0.zip 게임에서 통계 측정 및 광고 추적을 위해 Firebase 을 연동한다. 앞서 [Unity - GPGS 와 Admob 연동 및 배포 준비 작업]  연동 이후에 작업을 진행 한다. 유니...