Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.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#_C#_Unity3d - Fatal编程技术网

如何将对应的变量名转换为对应的值C#

如何将对应的变量名转换为对应的值C#,c#,unity3d,C#,Unity3d,我有这个剧本。我试图找出玩家和地图四个角之间的距离。它成功返回每个角点之间的距离(distanceC1=角点1等),并找出离玩家最远的角点 我正试图把那个角落里的游戏对象名改成“最长距离名”。与最远距离对应的角 如果DistanceC3是最远的,则将largestDistanceName设置为与游戏对象Corner3相等,以此类推 我不知道该怎么做。多谢各位 public GameObject Corner1; public GameObject Corner2; public Ga

我有这个剧本。我试图找出玩家和地图四个角之间的距离。它成功返回每个角点之间的距离(distanceC1=角点1等),并找出离玩家最远的角点

我正试图把那个角落里的游戏对象名改成“最长距离名”。与最远距离对应的角

如果DistanceC3是最远的,则将largestDistanceName设置为与游戏对象Corner3相等,以此类推

我不知道该怎么做。多谢各位

  public GameObject Corner1;
  public GameObject Corner2;
  public GameObject Corner3;
  public GameObject Corner4;


  public float distanceC1;
  public float distanceC2;
  public float distanceC3;
  public float distanceC4;




    distanceC1 =Vector3.Distance(Corner1.transform.position,ThePlayer.transform.position);
    distanceC2 =Vector3.Distance(Corner2.transform.position,ThePlayer.transform.position);
    distanceC3 =Vector3.Distance(Corner3.transform.position,ThePlayer.transform.position);
    distanceC4 =Vector3.Distance(Corner4.transform.position,ThePlayer.transform.position);
    float[] DistanceArray = {distanceC1, distanceC2, distanceC3, distanceC4};
    float maxValueDistance = DistanceArray.Max();
    LargestDistance = maxValueDistance;
    LargestDistanceName = INSERT SCRIPT THAT FETCHES CornerX corresponding to the distance. 

您的所有代码都可以替换为一个简单的LINQ查询

// assuming you have...
List<GameObject> corners;
GameObject player;

var closestCornerName = corners
    // order collection of corners by the distance to player, descending
    .OrderByDescending(corner =>
        Vector3.Distance(corner.transform.position, player.transform.position)) 
    // take the first (furthest) one
    .First()
    // take its name
    .name;
//假设您有。。。
列出角落;
游戏对象玩家;
var closestCornerName=角点
//按与玩家的距离排列角点集合,递减
.OrderByDescending(角点=>
向量3.距离(角点.变换.位置,玩家.变换.位置))
//拿第一个(最远的)
.First()
//取它的名字
名称

如何将此最远角设置为navmesh代理要转换到的vector3目标。像这样的代码。Vector3目标=transform.position-Vector3.forward*goalDistance;//transform.position+-Vector3.forward agent.SetDestination(目标)<代码>转换farthestCorner=GetFarthestCorner(…);agent.SetDestination(farthestCorner.position-Vector3.forward*goalDistance)AFAIK,iOS不支持LINQ的所有功能,尤其是排序功能。但它可能已经被修复了。
Transform farthestCorner = GetFarthestCorner( ThePlayer.transform, Corner1.transform, Corner2.transform, Corner3.transform, Corner4.transform ) ;
float distance = Vector3.Distance( farthestCorner.position, ThePlayer.transform.position ) ;
// assuming you have...
List<GameObject> corners;
GameObject player;

var closestCornerName = corners
    // order collection of corners by the distance to player, descending
    .OrderByDescending(corner =>
        Vector3.Distance(corner.transform.position, player.transform.position)) 
    // take the first (furthest) one
    .First()
    // take its name
    .name;