这是我目前网络库组件构思的一种写法
目前考虑的是前后端同一套代码,我会提供一个编译插件再编译的时候剔除代码,客户端里不会包含__SERVER__的代码,后端使用nodejs也会编译后剔除__CLIENT__代码,并且为了方便protobuf的使用,采用装饰器简化了手写protobuf文件的过程。当然还有很多的装饰器这里没有列举,比如属性自动同步属性
class PlayerComponent extends NetworkComponent {
@SyncVar()
public health: number = 100;
@SyncVar({ hook: 'onNameChanged' })
public playerName: string = 'Player';
@SyncVar({ authorityOnly: true })
public isReady: boolean = false;
onNameChanged(oldName: string, newName: string) {
const logger = createLogger('PlayerComponent');
logger.info(`Name changed: ${oldName} -> ${newName}`);
}
}

