“新相机相机”这个术语在Unity3d中有什么作用?

时间:2018-07-20 11:51:11

标签: c# unity3d

我正在浏览照相机脚本,并遇到了声明术语

new Camera camera;

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

上述声明是否有特定用例?

1 个答案:

答案 0 :(得分:7)

此功能称为"new Modifier"

您需要了解Unity中camera变量的作用:

Component中声明了变量名“ camera”。当脚本从MonoBehaviour派生而脚本又从Component派生而来的Behaviour派生时,您将继承此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;

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