c# - C# 共享属性和字段继承
问题描述
我一直在尝试在不同的类中完美地构建我正在从事的这个项目,同时最大限度地利用继承的好处。然而,到目前为止,它给我带来的头痛多于好处。
考虑一下:
public class SuperClass : MonoBehaviour
{
[SerializeField] protected Camera _camera;
}
和这个
public class SubClass : SuperClass
{
}
- 两个脚本都附加到场景中的不同游戏对象。
- 相机将通过在检查器中拖动来分配
我试过了,unity 似乎告诉我必须将相机分配给 SuperClass 游戏对象和子类游戏对象,这对我来说毫无意义。
如何将相机分配给 SuperClass.cs,然后由其所有子类使用和共享?
提前致谢!
解决方案
由其所有子类共享
类共享只能通过使用“静态”(静态变量或单例)来实现。
一种解决方法可能是
public class SubClass :SuperClass
{
[SerializeField] Camera camera;
void Awake()
{
if(camera!=null)
{
_camera=camera;
}
}
// Start is called before the first frame update
void Start()
{
camera=_camera;
}
}
要进一步扩展解决方案,您可以编写一个编辑器脚本或从代码中获取相机。
推荐阅读
- node.js - 尝试在 node.js 中安装 node-sass 的奇怪问题
- reactjs - 如何在 Atlaskit 中指定自定义媒体客户端,尤其是 @atlaskit/editor-core
- angular - 角路由器插座破坏垫网格列表
- django - 在 django 中创建注册视图,总是出现完整性错误
- jenkins - 自动部署检查 Jenkins
- angular - 更改界面中的数据后的角度html更新
- android - 在 stripDebugDebugSymbols 步骤中找不到 arm-linux-androideabi 工具链
- r - 计算R中日期时间的出现
- android - 是否可以为 Android SDK 26 设置通知通道的振动模式的重复次数
- vb.net - 在 DataSet Objet 上正确排序数据