【发布时间】:2023-03-09 04:40:02
【问题描述】:
我正在使用带有 TypeScript 的 Phaser 进行游戏。我想为演员实现一个基于组件的架构。 我想要达到的目标是这样的:
var component:AwesomeComponent = actor.getComponent<AwesomeComponent>();
我知道有一个 workaround 通过构造 T 类型的对象。但我不喜欢它,因为我可能需要定义大量不同的构造函数来表示所有不同种类的组件。
我目前所做的是传递一个带有类型的字符串(当然数字会更好,但我仍在制作原型):
getComponent<T>(componentType:string): T
{
for (let i = 0; i < this.components.length; i++)
{
if (componentType == this.components[i].componentType)
{
return <T><any>this.components[i];
}
}
return undefined;
}
可以,但效果不好,你要输入两次类名:
var animComp = actor.getComponent<AnimationComponent>("AnimationComponent");
有什么解决方法的建议吗?
感谢您的宝贵时间!
【问题讨论】:
标签: typescript components phaser-framework