我正在浏览相机脚本,遇到了声明项

new Camera camera;


我想知道这是怎么做的。它在创建实例吗?令我感到困惑的是脚本已附加到Inspector中的Camera Object。那么为什么有必要创建相机实例呢?它在类之上定义,但未分配给任何变量。那么在Unity3d中它到底做了什么呢?

上述声明有任何特定的用例吗?

最佳答案

此功能称为"new Modifier"

您需要了解Unity中camera变量的情况:

camera中声明了变量名称“ Component”。当您的脚本从MonoBehaviour派生而来,而Behaviour又从Component派生而来,您将继承此camera变量。 camera变量让您访问此脚本附加到此GameObject的Camera组件。

问题在于camera变量现在已被弃用,Unity现在希望您使用GetComponent<Camera>()来获取附加到此GameObject的Camera组件。即使已弃用,它仍然存在。尚未删除。使用Obsolete属性将其简单标记为deprecatedd。您不能使用名称“ camera”声明变量。

例如,您不能执行以下操作:

Camera camera;


如果这样做,您将得到以下令人讨厌的警告:


  严重性代码说明项目文件行抑制状态
  警告CS0108'ScriptName.camera'隐藏继承的成员
  'Component.camera'。如果要隐藏,请使用new关键字。


通过使用new关键字声明一个名为camera的变量:

new Camera camera;


它会隐藏基类的属性,并删除该烦人的警告

关于c# - “新相机相机”这个术语在Unity3d中有什么作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51441908/

10-12 15:31