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
*/
createComponent<T extends Component>(componentType: new () => T): T;
createComponent<T extends Component>(componentType: new (...args: any[]) => T): T;
/**
* 将组件添加到组件列表中。返回组件。
* @param component
@@ -363,14 +363,14 @@ declare module es {
* 获取类型T的第一个组件并返回它。如果没有找到组件则返回null。
* @param type
*/
getComponent<T extends Component>(type: any): T;
getComponent<T extends Component>(type: new (...args: any[]) => T): T;
/**
* 尝试获取T类型的组件。如果未找到任何组件则返回false
* @param type
* @param outComponent
* @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
@@ -1100,7 +1100,7 @@ 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() {
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!");
}

View File

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

View File

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

View File

@@ -384,7 +384,7 @@ module es {
* 创建组件的新实例。返回实例组件
* @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();
this.addComponent(component);
return component;
@@ -405,7 +405,7 @@ module es {
* 获取类型T的第一个组件并返回它。如果没有找到组件则返回null。
* @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);
}
@@ -415,7 +415,7 @@ module es {
* @param outComponent
* @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);
return outComponent.value != null;
}