Unity3d 为什么图像和spritender组件不从一个公共基类继承?

Unity3d 为什么图像和spritender组件不从一个公共基类继承?,unity3d,inheritance,renderer,Unity3d,Inheritance,Renderer,我正在纠正一个脚本,加载一些精灵,并希望在UI和游戏中使用它。 但是有两种类型的渲染器,虽然它们都有Sprite的共同点,但是没有任何公共基类 我想同时使用图像和喷绘器,所以我想这样写: class SpriteLoader<T> where T: SomeRendererBaseClass { T renderer; void Load(){ renderer.sprite = GetSprite(); } } 但是要使用renderer.s

我正在纠正一个脚本,加载一些精灵,并希望在UI和游戏中使用它。 但是有两种类型的渲染器,虽然它们都有Sprite的共同点,但是没有任何公共基类

我想同时使用图像和喷绘器,所以我想这样写:

class SpriteLoader<T> where T: SomeRendererBaseClass {
  T renderer;
    void Load(){
       renderer.sprite = GetSprite();
      }
}
但是要使用renderer.sprite,我必须指定T,我没有找到它的公共基类

如果我要在UI中显示游戏角色,我应该在图像组件上加载精灵,但在游戏中,我必须在SpriteRenderer上执行相同的行为,作为程序员,我们不喜欢重复代码。

仅仅因为它们都有精灵并不意味着什么。 您将不得不处理这样一个事实,即这两个类之间没有您希望的相互关系。这和拥有一个具有name属性的Player类并试图找到一个具有GameObject的公共父类没有什么不同,GameObject也有一个名称


这两个类没有其他共同点,除了它们共享的祖先之外,它们不应该继承自某个共同的祖先。

至少它们应该有一个共同的接口。我已经看到Unity API最好不要使用接口,就像.Net使用INSTEAD一样。

为什么要这样做?如果这是在设计时,您可能可以使用PrefableUtility.ApplyPropertyOverride来获得您想要的。看,我在游戏中有一些角色是用Spritender渲染的。现在,如果我想向用户展示如何自定义它们,我将在UI画布中有一个自定义面板,在其中使用图像组件渲染角色。我希望在两个渲染器上使用相同的行为,因为它们基本相同,具有不同的渲染器。@MhEskandari它们是不同的渲染器类型,您需要将它们视为不同的渲染器类型。硬饼干。