c# - 如何从列表中获取值
问题描述
我的班级有我的清单,其中存储了两个值“位置,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);
解决方案
使用 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();
推荐阅读
- flutter - 使用不包含 UserBloc 类型的块的上下文调用错误 BlocProvider.of()
- angular - 我必须在 Angular 生产构建之前修复所有 TS 错误吗?
- list - Prolog - 如何计算列表的元素?
- java - 杰克逊序列化:包含正则表达式的字符串字段反转义以获取实际文字
- linux - 以编程方式获取容器内的 linux 进程内存使用情况
- python-3.x - evernote.edam.userstore.UserStore.Client:HTTP 状态 400
- eclipse - 如何使用 xtext 制作用于检查源代码的 DSL
- angular - 如何在 Typescript 中获取 Angular 组件选择器值
- python - scipy curve_fit 为 gompertz 模型引发“OptimizeWarning:无法估计参数的协方差”
- typescript - 如何根据用户登录显示组件路由器链接?