【问题标题】:Can I get an explanation about why Quaternion.identity has a capital Q but transform.position is lower case t?我能解释一下为什么 Quaternion.identity 有一个大写的 Q 但 transform.position 是小写的 t 吗?
【发布时间】:2020-01-28 07:26:41
【问题描述】:

我能解释一下为什么 Quaternion.identity 有一个大写的 Q 而 transform.position 是小写的 T 吗?是因为他们使用了不同的指令或程序集吗?

private void Fire() 
 {

    GameObject enemyLaser = Instantiate
    (enemyLaserPrefab, transform.position,
    Quaternion.identity)
    as GameObject;
 }

【问题讨论】:

    标签: c# visual-studio unity3d terminology


    【解决方案1】:

    因为Quaternion 指的是一个类型,因为idenditystatic,而transform 指的是附加到与脚本相同的GameObject

    出于某种原因,Unity 对属性使用驼峰命名法。通常,您实际上会为 public 属性使用 PascalCase,但这些是“约定”,基本上您可以决定使用其他符号 - 至少它们保持基本一致。

    【讨论】:

      【解决方案2】:

      这就是 Unity3d 的命名约定。类型 Quaternion 大写。但是他们对属性和字段使用“驼峰式”。因此没有大写的identity

      这完全是任意的,但它在整个 Unity3d API 中是一致的。

      请注意,因为identity 是一个静态成员,所以可以通过声明它的类型(Quaternion)来访问它。您正在查看的其他成员 transformposition 都是当前类的成员。 transform 属性返回当前对象的变换对象,position 属性返回变换对象的位置对象。因为它们都是类成员,而不是类型名称,所以它们也是驼峰式的。

      【讨论】:

      • 所以 transform 来自于 using system.generics 下的 Visual Studios 命名约定?
      • @GodBleach:不,它只是当前对象的成员。事实上,微软的命名约定都不会导致任何公共成员都是驼峰式的,更不用说类型名称是驼峰式的了。 .NET 命名约定通过所有公共成员使用 Pascal-case(该约定的一部分通常也排除公共字段,但偶尔会为只读字段设置例外......尽管这些字段仍然会有 Pascal-case 名称)
      • 所以,例如,identity 是 GameObject 的子类,所以它不会大写,因为它被用作变量而不是类型?
      • 不,identity 不是“子类”。子类将是继承另一种类型的类型。 identityQuaternion 类型的属性。它是一个成员,而不是继承类型。而且它没有大写,因为它不是一种类型。命名与如何使用无关。它基于那个东西。 (当然,它是什么直接决定了它的使用方式,但你不能选择它……它是语言强加给你的。)
      • 好的,我明白了,身份只是四元数的成员还是可以成为其他类型的成员?
      猜你喜欢
      • 2012-07-01
      • 1970-01-01
      • 2018-10-02
      • 1970-01-01
      • 1970-01-01
      • 2013-01-29
      • 1970-01-01
      • 1970-01-01
      • 2022-11-01
      相关资源
      最近更新 更多