From e6096b644f294e7c0a40c39ffe6e752c4ca87d42 Mon Sep 17 00:00:00 2001 From: yhh <359807859@qq.com> Date: Mon, 29 Mar 2021 17:28:58 +0800 Subject: [PATCH] =?UTF-8?q?getComponent=E4=B8=8D=E5=86=8D=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E6=8C=87=E5=AE=9A=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/bin/framework.d.ts | 8 ++++---- source/src/ECS/Components/Physics/ArcadeRigidbody.ts | 2 +- source/src/ECS/Components/Physics/Colliders/Collider.ts | 2 +- source/src/ECS/Components/Physics/ProjectileMover.ts | 2 +- source/src/ECS/Entity.ts | 6 +++--- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/source/bin/framework.d.ts b/source/bin/framework.d.ts index 49abd497..f2ee3b46 100644 --- a/source/bin/framework.d.ts +++ b/source/bin/framework.d.ts @@ -353,7 +353,7 @@ declare module es { * 创建组件的新实例。返回实例组件 * @param componentType */ - createComponent(componentType: new () => T): T; + createComponent(componentType: new (...args: any[]) => T): T; /** * 将组件添加到组件列表中。返回组件。 * @param component @@ -363,14 +363,14 @@ declare module es { * 获取类型T的第一个组件并返回它。如果没有找到组件,则返回null。 * @param type */ - getComponent(type: any): T; + getComponent(type: new (...args: any[]) => T): T; /** * 尝试获取T类型的组件。如果未找到任何组件,则返回false * @param type * @param outComponent * @returns */ - tryGetComponent(type: any, outComponent: Ref): boolean; + tryGetComponent(type: new (...args: any[]) => T, outComponent: Ref): boolean; /** * 检查实体是否具有该组件 * @param type @@ -1100,7 +1100,7 @@ declare module es { } } declare module es { - abstract class Collider extends Component { + class Collider extends Component { /** * 对撞机的基本形状 */ diff --git a/source/src/ECS/Components/Physics/ArcadeRigidbody.ts b/source/src/ECS/Components/Physics/ArcadeRigidbody.ts index 294e8dba..73ec40d3 100644 --- a/source/src/ECS/Components/Physics/ArcadeRigidbody.ts +++ b/source/src/ECS/Components/Physics/ArcadeRigidbody.ts @@ -128,7 +128,7 @@ module es { } public onAddedToEntity() { - this._collider = this.entity.getComponent(es.Collider); + this._collider = this.entity.getComponent(es.Collider); Debug.warnIf(this._collider == null, "ArcadeRigidbody 没有 Collider。ArcadeRigidbody需要一个Collider!"); } diff --git a/source/src/ECS/Components/Physics/Colliders/Collider.ts b/source/src/ECS/Components/Physics/Colliders/Collider.ts index b977e496..0cb33cf8 100644 --- a/source/src/ECS/Components/Physics/Colliders/Collider.ts +++ b/source/src/ECS/Components/Physics/Colliders/Collider.ts @@ -1,5 +1,5 @@ module es { - export abstract class Collider extends Component { + export class Collider extends Component { /** * 对撞机的基本形状 */ diff --git a/source/src/ECS/Components/Physics/ProjectileMover.ts b/source/src/ECS/Components/Physics/ProjectileMover.ts index cfeea940..3416f836 100644 --- a/source/src/ECS/Components/Physics/ProjectileMover.ts +++ b/source/src/ECS/Components/Physics/ProjectileMover.ts @@ -8,7 +8,7 @@ module es { private _collider: Collider; public onAddedToEntity() { - this._collider = this.entity.getComponent(Collider); + this._collider = this.entity.getComponent(Collider); Debug.warnIf(this._collider == null, "ProjectileMover没有Collider。ProjectilMover需要一个Collider!"); } diff --git a/source/src/ECS/Entity.ts b/source/src/ECS/Entity.ts index 1589b959..44b49aa0 100644 --- a/source/src/ECS/Entity.ts +++ b/source/src/ECS/Entity.ts @@ -384,7 +384,7 @@ module es { * 创建组件的新实例。返回实例组件 * @param componentType */ - public createComponent(componentType: new () => T): T { + public createComponent(componentType: new (...args) => T): T { let component = new componentType(); this.addComponent(component); return component; @@ -405,7 +405,7 @@ module es { * 获取类型T的第一个组件并返回它。如果没有找到组件,则返回null。 * @param type */ - public getComponent(type: any): T { + public getComponent(type: new (...args) => T): T { return this.components.getComponent(type, false); } @@ -415,7 +415,7 @@ module es { * @param outComponent * @returns */ - public tryGetComponent(type: any, outComponent: Ref): boolean { + public tryGetComponent(type: new (...args) => T, outComponent: Ref): boolean { outComponent.value = this.components.getComponent(type, false); return outComponent.value != null; }