我的班级上有我的清单,该清单存储两个值 “位置,播放器类型”
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);
答案 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();