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