c# - “新相机相机”这个词在 Unity3d 中有什么作用?
问题描述
我正在浏览相机脚本并遇到声明术语
new Camera camera;
我想知道这是做什么的。它是在创建一个实例吗?让我感到困惑的是脚本已经附加到检查器中的相机对象。那么为什么需要创建一个相机实例呢?它在类之上定义,但未分配给任何变量。那么它在 Unity3d 中究竟做了什么?
上述声明的任何特定用例?
解决方案
此功能称为“新修饰符”。
您需要了解camera
Unity 中的变量发生了什么:
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;
它将隐藏基类的属性并删除那个烦人的警告
推荐阅读
- python - Python:如何在两个问题之间交替以检索两个不同列表的用户输入?
- c# - Getting changed variable value of injected class
- machine-learning - Matching records based on a scoring algorithm - supervised learning
- angular - Angular 2 ngClass 函数
- azure-container-service - 如何从逻辑应用在 Azure 容器注册表中进行身份验证
- android - Flutter 中的圆形显示动画相当于什么?
- python - 如何扩展numpy数组
- java - 如何在我的 Java Web 应用程序中访问 Heroku ClearDB?
- java - PersonQueue 不是抽象的,不会覆盖 Queue 中的抽象方法 addLast()
- java - 有没有办法简化这个三元语句?