为什么Image和SpriteRenderer组件不是从一个公共基类继承的?

问题描述 投票:0回答:2

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

我想同时使用Image和SpriteRenderer,所以我想写这样的:

class SpriteLoader<T> where T: SomeRendererBaseClass {
  T renderer;
    void Load(){
       renderer.sprite = GetSprite();
      }
}

但要使用“renderer.sprite”我必须指定T,我没有找到共同的基类。

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

unity3d inheritance renderer
2个回答
1
投票

Just because they both have a sprite doesn't mean anything.

你只需要处理这两个类以你想要的方式彼此不相关的事实。这与拥有Player属性的name类并尝试使用GameObject找到一个共同的父类(“它也有name!”)没有什么不同。

这两个类没有任何共同之处,不应该继承一些共同的祖先(除了他们共同的祖先之外)。


-2
投票

至少他们应该有一个共同的界面。我已经看到Unity API没有像.Net那样使用最好的接口

© www.soinside.com 2019 - 2024. All rights reserved.