先定义一个协程,注意格式:IEnumerator +协程名(){yield break等}如:
IEnumerator GPS()
{
if(!Input .location .isEnabledByUser)//判断定位服务是否开启
{
text.text = "定位失败";
yield break;
}
}
当调用协程时在start或update下StartCoroutine(名字);如在这里调用就是StartCoroutine(GPS());
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class GPSStaet : MonoBehaviour {
public Text text;
// Use this for initialization
void Start () {
StartCoroutine(GPS());
}
// Update is called once per frame
void Update () {
}
IEnumerator GPS()
{
if(!Input .location .isEnabledByUser)//判断定位服务是否开启
{
text.text = "定位失败";
yield break;
}
Input.location.Start();//启动位置服务
int maxWait = 20;
while (Input .location .status ==LocationServiceStatus.Initializing &&maxWait > 0)//等待启动结果
{
//正在获取GPS信息中
text.text = "正在获取GPS信息中";
yield return new WaitForSeconds(1);//等待1s
maxWait--;//1s减一次
}
if(maxWait < 1)
{
//获取GPS信息超时
text.text = "获取GPS信息超时";
yield break;
}
if(Input .location.status == LocationServiceStatus.Failed)
{
//获取GPS信息失败
text.text = "获取GPS信息失败";
yield break;
}
else
{
//获取GPS信息成功
text.text = "获取GPS信息成功";
Application.OpenURL("https://map.baidu.com/");//跳转到某一个网页
LocationInfo loc = Input.location.lastData;
Debug.Log("经度" + loc.longitude + "纬度" + loc.latitude);
}
yield return new WaitForEndOfFrame();
}
}