GoogleMapSDK for Unityのクイックスタート

今までは許可された開発会社しか使えなかったUnity用のGoogleMapSDKが個人の開発者でも利用可能になりました。

[Googleがマップのゲーム向けAPIを一般公開、ポケモンGOのような位置情報ゲームを誰でも作れるように@Gigazine](https://gigazine.net/news/20200616-google-map-platform-gaming-solution/)

早速手元のUnityで試してみました。

# GCPに登録する

利用にはGoogle Cloud Platformへの登録が必須です。

https://cloud.google.com/gcp/

また、GoogleMapSDKはAPIによる従量課金制なのでクレジットカードの登録も必要です。料金ですが、上記Gigazineさんの記事には

> 記事作成時点では1カ月200ドル(約2万1000円)分までは無料となっています。

とありました。

# SDKをDLする
おなじみ.unitypackageをDLします。

https://developers.google.com/maps/documentation/gaming/install_sdk

にアクセスして、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274974/0c7e5e9d-bb04-af1a-7e4a-8952938102b5.png)

の `here` をクリックするとDLが始まります。

## 注意
[GoogleMapSDK unity]とかでググって、

<img width="450" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274974/5e8d6176-863f-dcbe-8bfc-c1524c968633.png">
↑これをクリックして
https://developers.google.com/maps/documentation/gaming/overview_musk?hl=ja

にとんで、[クイックスタート](https://developers.google.com/maps/documentation/gaming/quick_start?hl=ja)の

<img width="420" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274974/2afb1d7a-b0b5-7642-7c06-46a7b87a505a.png">

↑これの[スタートガイド](https://developers.google.com/maps/documentation/gaming/unity?hl=ja)をクリックしても404になります(2020/6/17時点)ので、
https://developers.google.com/maps/documentation/gaming/install_sdk
から直接行くか、ドキュメントの言語を日本語から英語に切り替えてリンクをクリックしてください。

# サンプルで試す
SDKがDLできれば、.zipを解凍して、[Assets]->[Import Package]->[Custom Packages]からGoogleMaps.unitypackageを選択してインポートします。

サンプルが Assets/GoogleMaps/Examples/01_GettingStarted/HelloWorld.unity にありますが、起動しても

<img width="400" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274974/76f9ae21-abd1-4066-8897-a02cad002ea6.png">

と警告が出て、

```
ArgumentException: Missing API Key, fill in via MapsService Component in the Unity Inspector.
```

のような例外を吐いて終了すると思います。

上記、公式ドキュメントにある通り、GoogleMapSDKはGoogleのサービスのAPIにアクセスする必要があり、またリクエスト元を特定するためにAPIキーを使ってアクセスする必要があります。

## APIの有効化

GoogleMapSDKで使用されるAPIは

* Semantic Tile API
* Playable Locations API

の2つです。これらのAPIが使えるように有効化します。

GCP上にプロジェクトがない場合は以下の手順に進めない可能性があるので、その場合は何かプロジェクトを作成しましょう。

1. [GCPのコンソール](https://console.cloud.google.com)を開きます。
2. 左上のナビゲーションメニューから [APIとサービス] を開きます。
3. 上部の[+APIとサービスを有効化]を選択します。
4. APIとサービスを検索のフォームに `Semantic Tile API` と入力します。
5. Semantic Tile APIのページを開き、[有効にする]を選択します。
6. 同様に `Playable Locations API` も有効化します。

組織の場合は権限によっては[有効にする]ボタンが押せなくなっている場合があるようです。

個人的にはまったのが、ナビゲーションメニューから下のほうにある[Google Map]を選んでさまよってました。AndroidやiOSの場合はここから設定するようですが、Unityの場合は上記2つのAPI設定で事足りるようです。

## APIキーの作成
有効にした2つのAPIにAPIキーを割り当てます。

1. 左上のナビゲーションメニューから [APIとサービス>認証情報] を開きます。
2. 上部の[+認証情報を作成]から APIキー を選択します。
3. 「APIを作成しました」と表示がでるので、右下の[キーを制限]を選びます。
4. APIの制限にて、キーを制限をチェックし、ドロップダウンから `Semantic Tile API` と `Playable Locations API` の2つを選択します。
5. [保存]を押します。

<img width="450" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274974/68d97b11-7d81-2da6-a61f-05d2c4ea8190.png">

右上の **API Key** の欄にランダムなアルファベットの文字列が表示されているはずなので、これをコピーします。

Unityに戻って、HelloWorldシーンの `Basic Example Script` オブジェクトの `MapService` コンポーネントの `Api Key` に inspectorから貼り付けます。

シーンを再生すれば自由の女神と思われるオブジェクトが出現します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274974/0772b288-c1bc-9863-52a9-75c67b1cc0c0.png)

### !!超注意!!
**API KeyをGitHubなどにPushしてしまうと悪用される恐れがあるので注意してください。**

### パラメータを変えてみる
`Basic Example Script` オブジェクトの `Basic Example` コンポーネントの `Lat Lon` を任意の値にすれば表示されるオブジェクトが変わるのでそれだけで楽しいです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274974/2ed1d227-4d0f-10d6-68b7-893eb7f765d7.png)

画像は岡山駅(34.666369,133.918588)です。