首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unity 5.3 - C# -- List<Vector2>如何提取最大X值?

Unity 5.3 - C# -- List<Vector2>如何提取最大X值?
EN

Stack Overflow用户
提问于 2016-08-02 07:07:55
回答 7查看 2.2K关注 0票数 4

我正在Unity5.3上开发一个C#脚本。我有一个Vector2值的列表,我需要提取列表中最大的X值。我正在尝试做以下事情:

代码语言:javascript
复制
public List<Vector2> Series1Data;
... //I populate the List with some coordinates
MaXValue = Mathf.Max(Series1Data[0]);

但是,我得到以下错误:

代码语言:javascript
复制
error CS1502: The best overloaded method match for `UnityEngine.Mathf.Max(params float[])' has some invalid arguments
error CS1503: Argument `#1' cannot convert `UnityEngine.Vector2' expression to type `float[]'

有没有其他方法可以提取列表中最大的X值?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2016-08-02 07:27:00

您正在尝试将列表放在不能将该类型的变量作为参数的函数上。

Mathf.Max在这里您可以看到它可以处理哪些类型的参数。

下面的代码可能会完成以下工作:

代码语言:javascript
复制
public List<Vector2> Series1Data;
... //I populate the List with some coordinates

MaXValue = Series1Data[0].x; //Get first value
for(int i = 1; i < Series1Data.Count; i++) { //Go throught all entries
  MaXValue = Mathf.Max(Series1Data[i].x, MaXValue); //Always get the maximum value
}
票数 3
EN

Stack Overflow用户

发布于 2016-08-02 07:21:52

您可以通过Linq完成此操作:

代码语言:javascript
复制
MaxXValue = Series1Data.Max(v => v.x);

这假设您的Series1Data列表对象不为null或空。

票数 2
EN

Stack Overflow用户

发布于 2016-08-02 07:23:52

你可以尝试这样做:

代码语言:javascript
复制
float xMax = Single.MinValue; 
foreach (Vector2 vector in Series1Data)
 {
   if (vector.X > xMax)
   {
     xMax = vector.X; 
   } 
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38709411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档