Led*_*dii 5 naming-conventions unity-game-engine
我几乎是Unity的新手。作为一名C ++程序员,Unity中的命名约定使我有些困扰。加上强迫症让我发疯了;)
对象具有一个属性Transform,该属性又具有一个属性Position。但是,必须通过transform.position使用小写代码来访问这些属性。这对我来说不是很直观。因此,我想知道如何看待它,以便更轻松地避免出现并发症。通过快速查看变量,我应该使用什么约定来告知所有内容。
Unity约定实际上非常简单:所有内容均采用Pascal大小写,类型(类,结构,枚举)和方法以大写字母开头,字段和属性以小写字母开头。枚举值用大写字母表示,常量用小写字母表示(通常)。所以ClassName,MethodName,myField,myProperty { get; set; },MyEnum.CaseA...就是这样。
就您的示例而言,Transform是类,而是在该特定GameObject / Component中transform实例的访问Transform器。另外,Transform没有Position属性,而是有position属性(总是小写)。
这或多或少地基于C#的约定和标准.NET库(MS对此有非常 精确的 指导),但标准.NET使用UpperCase表示公共/受保护的方法和属性,而使用小写字母表示私有(通常,同样;我认为编码者的品味更多地由私人决定)。
附带说明,对于任何代码库,任何语言,最好的方法始终是遵循现有约定。每个经验丰富的程序员都会告诉您这一点。相信我,我了解OCD,但在这种情况下,建议您放开它。关于为什么一个约定比另一个约定好(根据定义,约定是任意的)的客观争论很少,即使存在约定,您可以做的绝对最糟糕的事情是混合多个约定,因为那时您有0个约定所有,永远不知道会发生什么。
至少C#试图标准化;我已经在几个C ++代码库工作,我看不到一个共同点:UpperCaseClassNames,lowerCaseClassNames,underscore_separated,tClassName,ENUMS_IN_UPPER,或不...这是很少一致,所以越少,你混的更好。