1. 관련 패키지 설치
https://assetstore.unity.com/packages/tools/utilities/google-sheets-to-unity-73410
에셋스토어에서 Google Sheets To Unity 패키지를 다운받아 임포트한다.
구글 스프레드 시트와 유니티를 연동하는 플러그인은 링크해놓은 패키지(무료)가 있고
itch.io에서 구매할 수 있는 Unity Google Sheets (UGS. 유료 $17.59)가 있다.
일단 무료 패키지를 써보다가 불편한 점이나 한계점을 느끼게되면 갈아탈 생각이다.
"Multiple precompiled assemblies with the same name Newtonsoft.Json.dll included on the current platform. Only one assembly with the same name is allowed per platform."
비교적 최신 버전의 유니티에서 패키지를 설치하면 에러 메세지부터 우리를 반겨준다.
프로젝트 내에 Newtonsoft.Json.dll 파일이 중복된다는 것이다.
하나는 Library/PackageCache/com.unity.nuget.newtonsoft-json@2.0.0/Runtime/에 존재하고
다른 하나는 Assets/Google Sheets to Unity/Scripts/v3/Plugins/에 존재한다.
아무래도 유니티가 특정 버전부터 라이브러리에 Newtonsoft.Json.dll을 포함시켰는데
Google Sheets To Unity 패키지가 만들어졌던 시점(유니티 버전)에는 포함이 되지 않았던 모양이다. (추측)
Library쪽의 dll은 에디터를 실행할 때마다 재생성되니 패키지쪽의 dll을 삭제하면 에러가 사라진다.
그리고 또 에러 하나 더 잡고 가야겠다.. 게임을 플레이하면 런타임에 위와 같은 에러들이 발생한다.
Google.GData.Client.dll 파일과 관련된 에러인데 정확한 의미는 알 수 없으나
친절하게 아래에 Assembly Version Validation can be disabled in Player Settings "Assembly Version Validation" 이라고
힌트를 알려주고 있다.
프로젝트에서 Google.GData.Client.dll을 검색한 뒤 인스펙터 창에서 Validate References 옵션을 체크 해제해준다.
2. 구글 스프레드 시트 활성화
https://console.developers.google.com/
구글 개발자 콘솔 페이지다. 접속해서 구글 계정으로 로그인한다.
그리고 새 프로젝트를 만들어준다. 새 프로젝트를 만드는데 입력해야하는 정보는 그렇게 까다롭지 않다.
그 뒤에 서비스 검색창에서 google sheets api를 검색하면 원하는 구글 스프레드 시트 기능이 나온다.
오른쪽 상단에 활성화 버튼으로 이 프로젝트에 스프레드 시트 기능을 활성화한다.
나같은 경우에는 활성화를 누르니 개발자로서의 계정 정보를 확인하는 과정이 있었다.
활성화를 한 뒤에 다시 콘솔페이지에서 사용자 인증 정보 페이지로 들어간다.
그리고 상단에 사용자 인증 정보 만들기 - OAuth 클라이언트 ID 를 선택한다.
먼저 OAuth 만들기에 대한 동의부터 해야한다. 외부를 선택하고 만들기를 선택한다.
여러가지 항목에 정보를 입력할 수 있는데 일단 앱 이름과 이메일 정보 정도만 입력해줬다.
API 접근 제한이나 테스트 사용자 목록 등은 지금 단계에서는 건드리지 않았다.
다시 OAuth 클라이언트 ID를 선택하면 만들기 화면이 나오는데 패키지 이름과 SHA-1 인증서. 두 가지가 필요하다.
유니티 에디터로 돌아간다..
File - Build Settings에 들어가서 플랫폼을 Android를 선택하고 Player Settings에 들어간다.
그 뒤에 Player 탭을 선택하고 가장 상단에 회사 이름과 제품 이름을 적어준다.
그 다음 스크롤을 내려서 Other Settings에 Identification 항목을 보면 패키지네임을 적어줄 수 있다.
그 다음 Publishing Settings 탭에서 Keystore Manager를 열고 새로운 키를 생성한다.
저장할 로컬 위치와 이름을 정해주면
위와 같이 키에 들어갈 정보들을 입력할 수 있다.
이름, 회사 정보, 도시 이름 등은 일단 패스하고 Add Key를 눌러준다.
나같은 경우에는 이 때 JDK 관련 에러가 출력됐다.
JDK는 https://www.oracle.com/java/technologies/downloads/ 에서 직접 JDK를 설치해도 되는데
유니티 허브를 통해서 설치한 유니티 버전에 필요한 모듈들을 추가해줬다.
안드로이드 관련 모듈들이 제대로 설치됐는지는 Edit - Preferences - External Tools 탭에서 확인할 수 있다.
JDK 오류를 해결하고 다시 Keystore Manager를 통해 키를 만든다.
그리고서 다시 Publishing Settings를 열어보면 만든 키가 할당된 것을 확인할 수 있다.
자동 설정되지 않았다면 Select...를 통해서 로컬에 저장한 키를 가져올 수 있다.
그 다음 만든 keystore가 있는 폴더에 가서 쉬프트 + 오른쪽 클릭해서 '여기에 PowerShell 창 열기'를 선택한다.
keytool -list -v -keystore [키스토어 파일 이름].keystore 명령어를 쳐준다.
유니티의 Keystore Manager를 통해서 키스토어를 만들었을 때 설정했던 비밀번호를 입력하면 SHA-1 인증서를 확인할 수 있다.
여기서 나는 두 가지의 시행착오가 있었다.
(1) cmd를 통해서 인증서 확인을 하니 SHA256 키만 출력이 됐다.
당장 SHA1과 SHA256의 차이도 잘 모르는 상태에서 방법을 여러가지 찾아 헤매다가
cmd가 아닌 PowerShell로 접근하니 성공적으로 출력이 됐다.
(2) 'keytool'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다.
위와 같은 에러가 떴다. 작업하는 컴퓨터가 포맷한지 얼마 안된 컴퓨터여서 JDK가 설치되지 않아서 생기는 문제였다.
이제 패키지네임과 SHA-1 인증서 키를 가지고서 다시 구글 콘솔의 OAuth 클라이언트 ID 만들기 페이지로 돌아간다.
아까 적지 못 했던 패키지네임과 SHA-1 인증서 키를 입력하고 확인을 누르면
위와 같이 클라이언트 ID가 생성이 된다.
그리고 저 이름을 클릭하면 클라이언트 이름, 패키지 이름, SHA-1 인증서 키를 다시 확인하거나 수정할 수 있다.
클라이언트 ID 키를 복사한 뒤에
유니티 에디터로 돌아가서 Window - GSTU - Open Config 를 선택하면
이 글에서 맨 처음에 설치했던 Google Sheets To Unity 플러그인의 윈도우가 뜬다.
여기에 클라이언트 ID를 붙여넣기한다. 밑에는 비밀번호도 요구하는데
암만 봐도 구글 콘솔에서는 ID만 알려줄 뿐 비밀번호를 알려주지 않는다.....
또 뭘 잘 못 했을까 찾아보다가 비밀번호는 입력하지 않고 Build Connection 버튼을 눌러보았다.
그러고서 웹 페이지가 자동으로 열리더니 정상적으로 연결됐다고 출력이 나왔다!
비밀번호 입력을 못 해서 보안상에 문제가 있을까 우려가 되긴 하지만 천천히 다시 알아봐야겠다.
3. 유니티에서 구글 스프레드 시트 데이터 읽기
이제 구글 스프레드 시트 (https://docs.google.com/spreadsheets/)에 접속해서 시트를 만들어준다.
적당히 위와 같이 작성하고 주소창에서 시트의 키와 하단의 시트의 이름을 복사해놓는다.
그리고 이 시트를 읽는 코드는 직접 API를 검색하여 작성해도 되지만 빠른 테스트를 위해 패키지 하나를 임포트한다.
(패키지 출처 https://ajh322.tistory.com/247)
별다른건 아니고 스크립트와 에셋 하나씩 들어있다.
새로 추가된 TestData.asset의 인스펙터에 로드 조건들을 입력할 수 있다.
TestData.cs 스크립트를 열어보면 단번에 구조를 파악할 수 있고, 본인이 작성한 시트에 따라서 스크립트도 수정해줘야한다.
그리고 Pull Data Method One 버튼을 클릭하면...
정상적으로 출력이 된 것을 확인할 수 있다.
드디어 구글 스프레드 시트 연동이 끝났다.
앞으로 내 게임에 맞게 테이블을 읽고 파싱하는 방법을 커스텀하는 일만 남았다.
'1인 개발 > 개발 환경' 카테고리의 다른 글
클라우드 웹 서버 설치 & 연동하기 #2 (0) | 2023.02.06 |
---|---|
클라우드 웹 서버 설치 & 연동하기 #1 (0) | 2023.02.06 |
GitHub에 원격 저장소 생성 및 프로젝트 업로드 (0) | 2021.10.19 |