【问题标题】:UnityScript - How To Loop Through Public Properties of A ClassUnityScript - 如何循环遍历类的公共属性
【发布时间】:2015-08-09 15:43:04
【问题描述】:

我在 UnityScript 中有以下脚本,在 Unity 编辑器中称为 JavaScript,但不完全相同,尤其是循环对象时。

public class UpgradeProfile extends MonoBehaviour {

    public var brakeSpeed : float = 0;
    public var jumpForce  : float = 0;
    public var maxJumps : int = 1;

};

如何循环访问该类的所有属性,例如,记录这些值或将它们与同一类的另一个成员的值相加?

注意: UnityScript 不是 JavaScript C#,因此与这些语言相关的答案不能回答这个问题。

【问题讨论】:

  • 试图通过编辑删除 ienumerable 标记的人 - 你不正确。它可能是 UnityScript 中的相关标签 - 它不仅限于 C#。
  • 作者,你也不对。 UnityScript 交叉翻译为 Boo,然后交叉翻译为 C#,然后实际编译到目标平台。我没有在 UnityScript 上花费太多时间,但如果无法在 UnityScript 代码中使用 C# 答案,我会感到惊讶。我个人用 Boo 编写 Unity 代码。
  • @ArtOfWarfare 你从哪里得到 UnityScript 被交叉翻译成 Boo 和 C# 的想法?这在某处有记录吗?
  • @Bart - 我现在找不到源,但我记得几年前,一位从事 Unity 工作的开发人员说,支持 Boo 的唯一原因是 UnityScript 可以跨- 翻译成它。 Boo 编译到与 C# 代码相同的运行时(单声道,对吗?)
  • 是的,确实是 Mono。这将在某种程度上解释为什么 Boo 被逐步淘汰但还没有完全被遗忘@ArtOfWarfare。有趣的。我从来不知道。

标签: unity3d unityscript


【解决方案1】:

这对我来说是为了获得属性和价值。

#pragma strict

public var test1 = 10;
public var test2 = 11;

function Start () 
{

    for(var property in this.GetType().GetFields()) 
    {
        Debug.Log("Name: " + property.Name + " Value: " + property.GetValue(this));
    }

}

然后打印出来

Name: test1 Value: 10
Name: test2 Value: 11

如果您想使用另一个组件执行此操作,请将 this 替换为 component

【讨论】:

  • 这个答案完全适用于更复杂的课程,非常感谢。
猜你喜欢
  • 1970-01-01
  • 2012-07-05
  • 2015-08-09
  • 2023-01-11
  • 1970-01-01
  • 2019-07-28
  • 2014-05-16
  • 1970-01-01
  • 2016-05-26
相关资源
最近更新 更多