如何从列表中获取值

时间:2018-10-26 15:42:51

标签: c#

我的班级上有我的清单,该清单存储两个值 “位置,播放器类型”

List<PlayerClass> playerClass = new List<PlayerClass>();

我想创建一个生成物。

我的代码看起来像

public Vector3 TransformPlayerPosition(PlayerType _myType)
{        
   Vector3 spawnposition = Vector3.zero;

    for (int i = 0; i < playerClass.Count; i++)
    {
        if (playerClass[i].type == _myType)
        {        
            spawnposition = playerClass[i].position;     
        }
    }
    return spawnposition;
  }

如果playerClass类型类似于'_myType' 这是可行的,但每次系统选择相同的位置时都可以/我想为

之类的特定类型创建随机系统
Random.Range(0, playerClass.Count, SPECIFIC TYPE);

1 个答案:

答案 0 :(得分:4)

使用LINQ过滤列表,然后从集合中获取随机项:

public Vector3 TransformPlayerPosition(PlayerType _myType)
{        
    var filteredPlayers = playerClass.Where(x => type == _myType).ToList();

    if (!filteredPlayers.Any())
        return Vector3.zero;

    var rndPos = rnd.Next(filteredPlayers.Count());

    return filteredPlayers[rndPos].position;
}

您需要在方法之外的某个地方实例化rnd

Random rnd = new Random();