快速访问多个值

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

这里没有更深层次的魔法;)

【讨论】:

以上是关于快速访问多个值的主要内容,如果未能解决你的问题,请参考以下文章

快速访问文本字段的值时出现奇怪的错误

怎么关闭win10快速访问功能?关闭Windows10系统快速访问方法

Git快速入门

文件夹上面多了固定到快速访问,怎么去掉

Java 集合快速失败异常

无法从快速访问工具栏 (QAT) 菜单中删除自定义功能区控件