版本:Unity 6(6000.0)
语言English
  • C#

LocationService.Start

提出更改建议

成功!

感谢您为提高 Unity 文档质量所做出的贡献。尽管我们无法接受所有提交的建议,但我们确实会阅读用户提出的每一条更改建议,并在适用情况下进行更新。

关闭

提交失败

由于某些原因,未成功提交您的更改建议。请在数分钟后<a>重试</a>。感谢您抽出宝贵时间为提高 Unity 文档质量所做出的贡献。

关闭

取消

声明

public void Start();

声明

public void Start(float desiredAccuracyInMeters);

声明

public void Start(float desiredAccuracyInMeters, float updateDistanceInMeters);

参数

desiredAccuracyInMeters 希望使用的服务精度,单位为米。这会明确设备最近位置坐标的精度。500 之类的高值不要求设备使用其 GPS 芯片,从而节省电池电量。5-10 之类低值提供最佳精度,但需要使用 GPS 芯片,从而消耗更多电池电量。默认值为 10 米。
updateDistanceInMeters 在 Unity 更新Input.location之前,设备必须横向移动的最小距离,单位为米。500 之类的高值会减少更新频次,并且处理起来消耗的资源更少。默认值为 10 米。

说明

启动位置服务更新。

调用此函数后,可以通过选中Input.location中的lastData访问设备最近的位置坐标。

注意:位置服务并不会立即开始发送位置数据。因此,请在Input.location中检查当前服务状态

在 Android 设备上,脚本中使用此方法会自动将ACCESS_FINE_LOCATION权限添加到 Android 清单中。如果使用 500 或更高之类的低精度值,请在Player Settings中选择低精度位置,以添加ACCESS_COARSE_LOCATION权限。

在 WebGL 设备上,此方法必须在协程中作为对用户手势(如鼠标点击)的响应而调用。注意:地理位置服务仅在 HTTPS 连接下可用,在开发过程中使用 https://127.0.0.1 时除外。desiredAccuracyInMetersupdateDistanceInMeters的使用不受支持,因为用户设备确定这两个值。

using UnityEngine;
using System.Collections;

public class TestLocationService : MonoBehaviour { IEnumerator Start() { // Check if the user has location service enabled. if (!Input.location.isEnabledByUser) Debug.Log("Location not enabled on device or app does not have permission to access location");

// Starts the location service. Input.location.Start();

// Waits until the location service initializes int maxWait = 20; while (Input.location.status == LocationServiceStatus.Initializing && maxWait > 0) { yield return new WaitForSeconds(1); maxWait--; }

// If the service didn't initialize in 20 seconds this cancels location service use. if (maxWait < 1) { Debug.Log("Timed out"); yield break; }

// If the connection failed this cancels location service use. if (Input.location.status == LocationServiceStatus.Failed) { Debug.LogError("Unable to determine device location"); yield break; } else { // If the connection succeeded, this retrieves the device's current location and displays it in the Console window. Debug.Log("Location: " + Input.location.lastData.latitude + " " + Input.location.lastData.longitude + " " + Input.location.lastData.altitude + " " + Input.location.lastData.horizontalAccuracy + " " + Input.location.lastData.timestamp); }

// Stops the location service if there is no need to query location updates continuously. Input.location.Stop(); } }