我正在浏览照相机脚本,并遇到了声明术语
new Camera camera;
我想知道这是怎么做的。它在创建实例吗?令我感到困惑的是脚本已附加到Inspector中的Camera Object。那么为什么有必要创建相机实例呢?它在类之上定义,但未分配给任何变量。那么它在Unity3d中到底能做什么呢?
上述声明是否有特定用例?
答案 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;
它将隐藏基类的属性,并删除该烦人的警告