我正在浏览相机脚本,遇到了声明项
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/