快速访问多个值
Posted
技术标签:
【中文标题】快速访问多个值【英文标题】:Quick access to multiple values 【发布时间】:2021-06-20 06:37:39 【问题描述】:本身不是 Unity 问题,但它可以帮助我说明这个问题。
属性不能返回多个值。但是,在 Unity Vector3.up 中,Vector3(0, 1, 0) 似乎的简写是这样做的(无论如何对我来说)。例如,键入 Debug.Log(Vector3.up) 会打印出前面提到的三个值。我不确定到底发生了什么以如此直接的方式访问这三个值。
根据我的知识水平,我尝试尽可能多地获取有关类和结构的信息,但我无法弄清楚这一点。有人可以帮我解决这个问题吗?
【问题讨论】:
只是猜测,我不知道那个类和 Unity 文档是……特别的。我的猜测:你看到的是Vector3.ToString()
方法的返回值。例如。 public string ToString() return x+y+z;
(伪代码,找不到,不想安装;))
不能返回一个以上的值。您将始终拥有像public bool IsItSomething()
这样的签名,它将返回bool
。您可以使用 out parameters 或返回包含所有所需值的包装类,或在某些情况下使用 Tuple。
【参考方案1】:
如果您可以拥有Source Code,则无需阅读文档;)
=> Vector3.up
确实只是一个简写并返回
public static readonly Vector3.up = new Vector3(0F, 1F, 0F);
Vector3.ToString
内部有
public override string ToString() return ToString(null, CultureInfo.InvariantCulture.NumberFormat); public string ToString(string format) return ToString(format, CultureInfo.InvariantCulture.NumberFormat); public string ToString(string format, IFormatProvider formatProvider) if (string.IsNullOrEmpty(format)) format = "F1"; return UnityString.Format("(0,1, 2)", x.ToString(format, formatProvider), y.ToString(format,formatProvider), z.ToString(format, formatProvider));
UnityString.Format
最终达到了预期的效果
public static string Format(string fmt, params object[] args) return String.Format(CultureInfo.InvariantCulture.NumberFormat, fmt, args);
这里没有更深层次的魔法;)
【讨论】:
以上是关于快速访问多个值的主要内容,如果未能解决你的问题,请参考以下文章