首页 > 解决方案 > 快速访问多个值

问题描述

本身不是 Unity 问题,但它可以帮助我说明这个问题。

属性不能返回多个值。但是,在 Unity Vector3.up 中,Vector3(0, 1, 0) 的简写似乎是这样做的(对我来说,无论如何)。例如,键入 Debug.Log(Vector3.up) 会打印出前面提到的三个值。我不确定到底发生了什么以如此直接的方式访问这三个值。

对于我的知识水平,我试图尽可能多地获取有关类和结构的信息,但我无法弄清楚这一点。有人可以帮我弄这个吗?

标签: c#classunity3dstruct

解决方案


如果您可以获得源代码,则无需阅读文档;)

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

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


推荐阅读