Unity C#如何获取玩家所在的国家、城市或位置

6

我有一个游戏,想要记录自己的分析数据。没有明确的位置,是否有类似于 SystemInfo 类的东西可以提供玩家的大致位置?

我知道可以利用 GPS,但是我不想让事情变得复杂。只需要简单的城市或国家即可。

请给予建议。

3个回答

5

我也遇到了这个问题,所以我想提供一个尽可能简单的解决方案。不幸的是,这并不容易:

[Serializable]
public class IpApiData
{
    public string country_name;

    public static IpApiData CreateFromJSON(string jsonString)
    {
        return JsonUtility.FromJson<IpApiData>(jsonString);
    }
}


public static IEnumerator SetCountry()
{
    string ip = new System.Net.WebClient().DownloadString("https://api.ipify.org");
    string uri = $"https://ipapi.co/{ip}/json/";


    using (UnityWebRequest webRequest = UnityWebRequest.Get(uri))
    {
        yield return webRequest.SendWebRequest();

        string[] pages = uri.Split('/');
        int page = pages.Length - 1;

        IpApiData ipApiData = IpApiData.CreateFromJSON(webRequest.downloadHandler.text);

        Debug.Log(ipApiData.country_name);
    }
}

这将轻松获取国家信息。如果你想要更改为城市或其他内容,你只需要按照此链接中的说明给IpApiData添加一些字段即可:https://ipapi.co/api/#complete-location


1
如果您从播放器设备发出请求,则不会受到速率限制。 - Dr-Bracket

1
你可以要求用户提供详细信息,或向你的Web服务器发送请求,使用像ipdata.co这样的东西来跟踪IP地址的来源。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接