这个简单啊,在基类构造函数里添加一行代码就搞定了:
// AbstractClass.ts:
let instanceId = 0;
export abstract class AbstractClass {
public __instanceId: number;
public constructor() {
this.__instanceId = instanceId++;
}
}
// TestClass.ts:
import {AbstractClass} from "./AbstractClass";
export class TestClass extends AbstractClass {
}
let a = new TestClass();
let b = new TestClass();
let c = new TestClass();
cc.log(a.__instanceId, b.__instanceId, c.__instanceId);
// 输出0 1 2
所有继承AbstractClass的类都拥有唯一的__instanceId,我估计cc._Class内部也是这样生成的吧。