我正在修改一个加载一些精灵的脚本,并希望在UI和游戏中使用它。但是每种渲染器有两种类型,没有任何共同的基类,尽管它们都有共同的Sprite!
我想同时使用Image和SpriteRenderer,所以我想写这样的:
class SpriteLoader<T> where T: SomeRendererBaseClass {
T renderer;
void Load(){
renderer.sprite = GetSprite();
}
}
但要使用“renderer.sprite”我必须指定T,我没有找到共同的基类。
如果我要在UI中显示游戏角色,我应该在Image组件上加载精灵,但在游戏中,我必须在SpriteRenderer上执行相同的行为,并且作为程序员我们不喜欢重复的代码。
你只需要处理这两个类以你想要的方式彼此不相关的事实。这与拥有Player
属性的name
类并尝试使用GameObject
找到一个共同的父类(“它也有name
!”)没有什么不同。
这两个类没有任何共同之处,不应该继承一些共同的祖先(除了他们共同的祖先之外)。
至少他们应该有一个共同的界面。我已经看到Unity API没有像.Net那样使用最好的接口