Unity 实用教程 之 快速获取当前GPS经纬度信息

2025-10-22 21:32:18

1、打开Unity,新建一个空工程,具体如下图

Unity 实用教程 之 快速获取当前GPS经纬度信息

2、新建一个画布Canas,添加一个Image作为背景,添加一个按钮,和一个Text显示获取到的经纬度信息,具体如下图

Unity 实用教程 之 快速获取当前GPS经纬度信息

3、保存场景,然后在工程中新建一个脚本,双击打开脚本进行编写代码获取经纬度信息,具体如下图

Unity 实用教程 之 快速获取当前GPS经纬度信息

4、打开脚本,编写代码,关键点是:1、判断用户是否打开GPS服务,2、然后初始化获取位置信息,3、连续获取未成功,提示获取超时,4、获取失败则提示无法获取您设备的位置,5、获取成功怎把获取的经纬度信息显示出来,具体代码和代码说明如下图

Unity 实用教程 之 快速获取当前GPS经纬度信息

Unity 实用教程 之 快速获取当前GPS经纬度信息

5、脚本代码如下:

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.UI;

public class GetGPS : MonoBehaviour {

    string GetGps = "";  

    public Text ShowGPS;  

    /// <summary>  

    /// 初始化一次位置  

    /// </summary>  

    void Start()  

    {  

        StartCoroutine(StartGPS());  

        GetGps = "N:" +  Input.location.lastData.latitude + " E:" + Input.location.lastData.longitude;  

        GetGps = GetGps + " Time:" + Input.location.lastData.timestamp;  

        ShowGPS.text = GetGps;  

        Debug.Log(GetGps);    

    }  

   /// <summary>  

    /// 刷新位置信息(按钮的点击事件)  

    /// </summary>  

    public void  updateGps ()  

    {  

        StartCoroutine(StartGPS());  

        GetGps = "N:" + Input.location.lastData.latitude + " E:" + Input.location.lastData.longitude;  

        GetGps = GetGps + " Time:" + Input.location.lastData.timestamp;  

        ShowGPS.text = GetGps;  

        Debug.Log(GetGps);  

    }  

    /// <summary>  

    /// 停止刷新位置(节省手机电量)  

    /// </summary>  

    void StopGPS()  

    {  

        Input.location.Stop();  

    }  

    IEnumerator StartGPS()  

    {  

        // Input.location 用于访问设备的位置属性(手持设备), 静态的LocationService位置    

        // LocationService.isEnabledByUser 用户设置里的定位服务是否启用  

        if (!Input.location.isEnabledByUser)  

        {  

            GetGps = "isEnabledByUser value is:" + Input.location.isEnabledByUser.ToString() + " Please turn on the GPS";  

            yield return false;  

        }  

        // LocationService.Start() 启动位置服务的更新,最后一个位置坐标会被使用    

        Input.location.Start(10.0f, 10.0f);  

        int maxWait = 20;  

        while (Input.location.status == LocationServiceStatus.Initializing && maxWait > 0)  

        {  

            // 暂停协同程序的执行(1秒)    

            yield return new WaitForSeconds(1);  

            maxWait--;  

        }  

        if (maxWait < 1)  

        {  

            GetGps = "Init GPS service time out";  

            yield return false;  

        }  

        if (Input.location.status == LocationServiceStatus.Failed)  

        {  

            GetGps = "Unable to determine device location";  

            yield return false;  

        }  

       else  

        {  

            GetGps = "N:" + Input.location.lastData.latitude + " E:" + Input.location.lastData.longitude;  

            GetGps = GetGps + " Time:" + Input.location.lastData.timestamp;

            Debug.Log ("Keyidingwei");

            yield return new WaitForSeconds(100);  

        }  

    }  

}

6、脚本编译正确,回到Unity界面。把脚本挂载到摄像机上,并且把Text赋值给脚本,并且绑定“updateGps”函数到按钮事件,具体如下图

Unity 实用教程 之 快速获取当前GPS经纬度信息

Unity 实用教程 之 快速获取当前GPS经纬度信息

7、然后导出iOS或者Andorid应用,安装到手机上,点击“刷新信息”按钮,即可显示地理信息,具体如下图

Unity 实用教程 之 快速获取当前GPS经纬度信息

Unity 实用教程 之 快速获取当前GPS经纬度信息

8、如是iOS导出,没有显示地理位置,必要的时候,在“Build”前,把“Player Settings”的 “Location Usage Description”填写一下,具体如下图

Unity 实用教程 之 快速获取当前GPS经纬度信息

9、到此,《Unity 实用教程 之 快速获取当前GPS经纬度信息》讲解结束,谢谢

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢