首页 > 解决方案 > “新相机相机”这个词在 Unity3d 中有什么作用?

问题描述

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

new Camera camera;

我想知道这是做什么的。它是在创建一个实例吗?让我感到困惑的是脚本已经附加到检查器中的相机对象。那么为什么需要创建一个相机实例呢?它在类之上定义,但未分配给任何变量。那么它在 Unity3d 中究竟做了什么?

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

标签: c#unity3d

解决方案


此功能称为“新修饰符”

您需要了解cameraUnity 中的变量发生了什么:

camera中声明了变量名“ ” Component。当您的脚本派生自MonoBehaviour哪个派生自Behaviour哪个最终派生自Component时,您将继承此camera变量。camera变量让您访问Camera附加到此脚本附加到的此游戏对象的组件。

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

例如,您不能这样做:

Camera camera;

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

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

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

new Camera camera;

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


推荐阅读