来自代码中不可用的文档的Unity3d Input.location

时间:2012-02-27 08:25:38

标签: android gps location unity3d

我正在开发一个Unity3d for Android项目。使用Unity的文档:

http://unity3d.com/support/documentation/ScriptReference/Input-location.html

我应该可以使用Input.location来访问GPS位置数据。但相反,我得到一个错误,基本上告诉我Input.location不是Unity的一部分。

  

Assets / Scripts / Prototype1.js(27,29):BCE0019:'location'不是   'UnityEngine.Input'的成员。

我检查了更新,它告诉我系统是完全最新的。我正在运行3.4.2f3版本

文档是否已过时?是否有对LocationService的不同引用?如何获取位置数据?

2 个答案:

答案 0 :(得分:2)

unity3d.com上的文件包含最新版Unity3D 3.5的文档。如果您在本地文件系统中查看文档,则找不到Input.location。好像他们已经改变了Unity3D 3.5中的界面。

我到目前为止还没有使用GPS,也许这个帖子和提供的链接可以为此提供一些启示:

How to import GPS location coordinates from Android device?

答案 1 :(得分:1)

我找到了基于iPhoneSettings的旧代码的文档。这是我现在使用的代码,它不完整(不响应位置服务的时间和其他如此全面的行为),但演示代码。

function Start () {
    locationStatus = LocationServiceStatus.Stopped;

    StartCoroutine(startLocationService()); 
}

function Update () {
    if(locationStatus == LocationServiceStatus.Running)
    {
        /*
        lat = Input.location.latitude;
        lon = Input.location.longitude;
        alt = Input.location.altitude;
        */

        lat = iPhoneInput.lastLocation.latitude;
        lon = iPhoneInput.lastLocation.longitude;
        alt = iPhoneInput.lastLocation.altitude;
    }
}

function startLocationService()
{
    //Input.location.Start(accuracy, distance);
    iPhoneSettings.StartLocationServiceUpdates(accuracy, distance);

    //while(Input.location.status == LocationServiceStatus.Initializing && maxWait > 0) {
    while(iPhoneSettings.locationServiceStatus == LocationServiceStatus.Initializing && maxWait > 0)
    {
        yield WaitForSeconds(1);
        maxWait--;
    }

    //locationStatus = Input.location.status;
    locationStatus = iPhoneSettings.locationServiceStatus;
}