UnityでGPSを使ったゲームを作ってみたい!という欲が出てきたので、GPSを取得する方法をさがして見よう。

出てきました。

※この記事はAndroidでしか検証していません。

チラ裏Unity 

この記事にある内容をコピペしたら、動きます。 
しかし、これは最初の一回だけ取得されるだけで、常に位置情報を取得してくれるわけではありません。

GPSゲームを作るなら、常に更新され続けるようにしたいですね。


using UnityEngine;
using System.Collections;

public class GPSLoader : MonoBehaviour {
    IEnumerator Start() {
        if (!Input.location.isEnabledByUser) {
            yield break;
        }
        Input.location.Start();
        int maxWait = 120;
        while (Input.location.status == LocationServiceStatus.Initializing && maxWait > 0) {
            yield return new WaitForSeconds(1);
            maxWait--;
        }
        if (maxWait < 1) {
            print("Timed out");
            yield break;
        }
        if (Input.location.status == LocationServiceStatus.Failed) {
            print("Unable to determine device location");
            yield break;
        } else {
            print("Location: " + Input.location.lastData.latitude + " " + Input.location.lastData.longitude + " " + Input.location.lastData.altitude + " " + Input.location.lastData.horizontalAccuracy + " " + Input.location.lastData.timestamp);
        }
//止めません
        //Input.location.Stop();
    }
}
void Update(){
//GPS情報
printf("Location\n緯度:" + Input.location.lastData.latitude + "\n経度:" + Input.location.lastData.longitude) ;
}

※Updateの内容は動かしてないのでちゃんと動くかは保証できません。
 
見てわかるように、一度 
Input.location.Start();をすると、Input.locationの内容が取得出来るようになります。
ただ、バッテリーをそれなりに食うようなので、適当にInput.location.Stop()で止めたほうがいいんでしょう。たぶん。