getComponent不再需要指定类型

This commit is contained in:
yhh
2021-03-29 17:28:58 +08:00
parent 6b2c18ad75
commit e6096b644f
5 changed files with 10 additions and 10 deletions

View File

@@ -353,7 +353,7 @@ declare module es {
* 创建组件的新实例。返回实例组件 * 创建组件的新实例。返回实例组件
* @param componentType * @param componentType
*/ */
createComponent<T extends Component>(componentType: new () => T): T; createComponent<T extends Component>(componentType: new (...args: any[]) => T): T;
/** /**
* 将组件添加到组件列表中。返回组件。 * 将组件添加到组件列表中。返回组件。
* @param component * @param component
@@ -363,14 +363,14 @@ declare module es {
* 获取类型T的第一个组件并返回它。如果没有找到组件则返回null。 * 获取类型T的第一个组件并返回它。如果没有找到组件则返回null。
* @param type * @param type
*/ */
getComponent<T extends Component>(type: any): T; getComponent<T extends Component>(type: new (...args: any[]) => T): T;
/** /**
* 尝试获取T类型的组件。如果未找到任何组件则返回false * 尝试获取T类型的组件。如果未找到任何组件则返回false
* @param type * @param type
* @param outComponent * @param outComponent
* @returns * @returns
*/ */
tryGetComponent<T extends Component>(type: any, outComponent: Ref<T>): boolean; tryGetComponent<T extends Component>(type: new (...args: any[]) => T, outComponent: Ref<T>): boolean;
/** /**
* 检查实体是否具有该组件 * 检查实体是否具有该组件
* @param type * @param type
@@ -1100,7 +1100,7 @@ declare module es {
} }
} }
declare module es { declare module es {
abstract class Collider extends Component { class Collider extends Component {
/** /**
* 对撞机的基本形状 * 对撞机的基本形状
*/ */

View File

@@ -128,7 +128,7 @@ module es {
} }
public onAddedToEntity() { public onAddedToEntity() {
this._collider = this.entity.getComponent<es.Collider>(es.Collider); this._collider = this.entity.getComponent(es.Collider);
Debug.warnIf(this._collider == null, "ArcadeRigidbody 没有 Collider。ArcadeRigidbody需要一个Collider!"); Debug.warnIf(this._collider == null, "ArcadeRigidbody 没有 Collider。ArcadeRigidbody需要一个Collider!");
} }

View File

@@ -1,5 +1,5 @@
module es { module es {
export abstract class Collider extends Component { export class Collider extends Component {
/** /**
* 对撞机的基本形状 * 对撞机的基本形状
*/ */

View File

@@ -8,7 +8,7 @@ module es {
private _collider: Collider; private _collider: Collider;
public onAddedToEntity() { public onAddedToEntity() {
this._collider = this.entity.getComponent<Collider>(Collider); this._collider = this.entity.getComponent(Collider);
Debug.warnIf(this._collider == null, "ProjectileMover没有Collider。ProjectilMover需要一个Collider!"); Debug.warnIf(this._collider == null, "ProjectileMover没有Collider。ProjectilMover需要一个Collider!");
} }

View File

@@ -384,7 +384,7 @@ module es {
* 创建组件的新实例。返回实例组件 * 创建组件的新实例。返回实例组件
* @param componentType * @param componentType
*/ */
public createComponent<T extends Component>(componentType: new () => T): T { public createComponent<T extends Component>(componentType: new (...args) => T): T {
let component = new componentType(); let component = new componentType();
this.addComponent(component); this.addComponent(component);
return component; return component;
@@ -405,7 +405,7 @@ module es {
* 获取类型T的第一个组件并返回它。如果没有找到组件则返回null。 * 获取类型T的第一个组件并返回它。如果没有找到组件则返回null。
* @param type * @param type
*/ */
public getComponent<T extends Component>(type: any): T { public getComponent<T extends Component>(type: new (...args) => T): T {
return this.components.getComponent(type, false); return this.components.getComponent(type, false);
} }
@@ -415,7 +415,7 @@ module es {
* @param outComponent * @param outComponent
* @returns * @returns
*/ */
public tryGetComponent<T extends Component>(type: any, outComponent: Ref<T>): boolean { public tryGetComponent<T extends Component>(type: new (...args) => T, outComponent: Ref<T>): boolean {
outComponent.value = this.components.getComponent<T>(type, false); outComponent.value = this.components.getComponent<T>(type, false);
return outComponent.value != null; return outComponent.value != null;
} }