首页 > 解决方案 > C# 共享属性和字段继承

问题描述

我一直在尝试在不同的类中完美地构建我正在从事的这个项目,同时最大限度地利用继承的好处。然而,到目前为止,它给我带来的头痛多于好处。

考虑一下:

public class SuperClass : MonoBehaviour
{
    [SerializeField] protected Camera _camera;
}

和这个

public class SubClass : SuperClass
{

}

我试过了,unity 似乎告诉我必须将相机分配给 SuperClass 游戏对象和子类游戏对象,这对我来说毫无意义。

如何将相机分配给 SuperClass.cs,然后由其所有子类使用和共享?

提前致谢!

标签: c#unity3dinheritance

解决方案


由其所有子类共享

类共享只能通过使用“静态”(静态变量或单例)来实现。

一种解决方法可能是

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;
    }
}

要进一步扩展解决方案,您可以编写一个编辑器脚本或从代码中获取相机。


推荐阅读