首页 > 解决方案 > 如何从列表中获取值

问题描述

我的班级有我的清单,其中存储了两个值“位置,PlayerType”

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);

标签: c#

解决方案


使用 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();

推荐阅读