Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更新功能在AR应用程序中不工作_C#_Unity3d_Mapbox_Augmented Reality - Fatal编程技术网

C# 更新功能在AR应用程序中不工作

C# 更新功能在AR应用程序中不工作,c#,unity3d,mapbox,augmented-reality,C#,Unity3d,Mapbox,Augmented Reality,我正在开发AR应用程序,该应用程序显示附近的POI。如下图所示,ArAlignedMap有一个脚本,允许我们使用真实世界坐标创建POI。 [WorldScaleAr][1] 我指定的POI标记预制之一是POI45。POI45在下面的屏幕截图中有对象。 [现场][2] 我为LabelIcon写了一个剧本。下面是这个脚本 脚本运行后,POI的颜色将更改,但不会在每一帧中更改。为什么不更新POI的颜色 using System.Collections.Generic; using UnityEngin

我正在开发AR应用程序,该应用程序显示附近的POI。如下图所示,ArAlignedMap有一个脚本,允许我们使用真实世界坐标创建POI。 [WorldScaleAr][1]

我指定的POI标记预制之一是POI45。POI45在下面的屏幕截图中有对象。 [现场][2]

我为LabelIcon写了一个剧本。下面是这个脚本

脚本运行后,POI的颜色将更改,但不会在每一帧中更改。为什么不更新POI的颜色

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System;
using static System.Math;
using Mapbox.Examples; // example script import

public class gradient45 : MonoBehaviour
{

    Vector3 temp;
    float temp2;
    float distances;
    int z = 2;
    float gra = 0;
    double r = 6371000;
    double[,] coords = new double[,] { { 39.872446, 32.735564 } }; // Eğitim Fakültesi
    double lat1;
    double lat2;
    double lon1;
    double lon2;
    double user_lat;
    double user_lat_rad;
    double user_lon;
    double user_lon_rad;
    String x;
    String y;
    // Start is called before the first frame update
    void Start()
    {
        // get poi Location
        lat1 = Math.PI * coords[0, 0] / 180.0;
        // lat2 = Math.PI * user[0, 0] / 180.0;
        lon1 = Math.PI * coords[0, 1] / 180.0;
        // lon2 = Math.PI * user[0, 1] / 180.0;

    }

    // Update is called once per frame
    void Update()
    {
        // Get user location
        // Latitude
        x = getLocation.x1.ToString();
        user_lat = Convert.ToDouble(x);
        user_lat_rad = Math.PI * user_lat / 180.0; // Radian
        // Longitude
        y = getLocation.y1.ToString();
        user_lon = Convert.ToDouble(y);
        user_lon_rad = Math.PI * user_lon / 180.0; // Radian

        // Change POIs sizes
        distances = Convert.ToSingle(distance(user_lat_rad, user_lon_rad));
        temp2 = gra;
        temp2 = temp2 + 100f;
        gra = temp2;

        GetComponent<Renderer>().material.color = new Color((gra/255f), 161f/255f, 127f/255f);


    }
    public double distance(double lat2, double lon2)
    {
        // Haversine Formula
        // Lat2,Lon2 = User Location
        // Lat1,Lon1 = POI Location
        double dist1 = Sqrt((Pow(Sin((lat2 - lat1) / 2), 2)) + Cos(lat2) * Cos(lat2) * (Pow(Sin((lon2 - lon1) / 2), 2)));
        double distance = 2 * r * Asin(dist1);
        return distance;
    }
} ```


[1]: https://i.stack.imgur.com/ONcxC.jpg
[2]: https://i.stack.imgur.com/Fh9q2.jpg
使用System.Collections.Generic;
使用UnityEngine;
使用UnityEngine.UI;
使用制度;
使用静态系统。数学;
使用Mapbox.Examples;//脚本导入示例
公共课等级45:单一行为
{
矢量3温度;
浮动温度2;
浮动距离;
int z=2;
浮动gra=0;
双r=6371000;
double[,]coords=新的double[,]{39.872446,32.735564};//Eğitim Fakültesi
双板条1;
双板条2;
双克隆1;
双克隆2;
双用户_lat;
双用户平面雷达;
双用户;
双用户无线电;
字符串x;
弦y;
//在第一帧更新之前调用Start
void Start()
{
//获取poi位置
lat1=Math.PI*coords[0,0]/180.0;
//lat2=Math.PI*用户[0,0]/180.0;
lon1=Math.PI*coords[0,1]/180.0;
//lon2=Math.PI*用户[0,1]/180.0;
}
//每帧调用一次更新
无效更新()
{
//获取用户位置
//纬度
x=getLocation.x1.ToString();
user_lat=Convert.ToDouble(x);
user\u lat\u rad=Math.PI*user\u lat/180.0;//弧度
//经度
y=getLocation.y1.ToString();
用户_lon=转换为双(y);
user_lon_rad=Math.PI*user_lon/180.0;//弧度
//更改POI大小
距离=转换为单个(距离(用户纬度、用户纬度);
temp2=gra;
temp2=temp2+100f;
gra=temp2;
GetComponent().material.color=新颜色((gra/255f)、161f/255f、127f/255f);
}
公共双倍距离(双倍lat2,双倍lon2)
{
//哈弗森公式
//Lat2,Lon2=用户位置
//Lat1,Lon1=POI位置
双区1=Sqrt((Pow(Sin((lat2-lat1)/2),2))+Cos(lat2)*Cos(lat2)*(Pow(Sin((lon2-lon1)/2),2));
双距离=2*r*Asin(距离1);
返回距离;
}
} ```
[1]: https://i.stack.imgur.com/ONcxC.jpg
[2]: https://i.stack.imgur.com/Fh9q2.jpg

嗨!附带的问题是,类全局属性temp2的用途是什么?它似乎只在一个函数中使用,而在该函数中,似乎可以通过编写
gra+=100f来替代它的使用。(一般来说,为了更好地进行将来的维护,请尝试使变量名精确地描述它们的角色,并尝试在尽可能小的范围内定义它们。)还请注意,当前在每次更新时调用
GetComponent()
;Unity中的一个常见问题是在开始时引用它一次,然后重新使用该引用。对于您的问题,您如何确定颜色不会在每次更新中更改?你使用Debug.Log吗,如果是的话,它的代码是什么,它的输出是什么?。当我调用脚本时,它没有错误消息。gra的值是否更改?(例如,在
GetComponent().material.color
行之前添加
Debug.Log(gra);