Я не уверен, как решить эту проблему, но я получаю сообщение об ошибке:
Uncaught ReferenceError: Невозможно получить доступ к «игре» до инициализации
Итак Я пытался сделать свойства и методы stati c, но ничего не сделал. Что я могу сделать, чтобы добавить декораторы к классам, которые добавляют элемент в мое свойство registeredComponents
в классе Game
?
Основная точка входа библиотеки выглядит следующим образом:
import { Game } from './Game'
export const game = new Game
Игровой компонент создает экземпляр Transform и добавляет его в свой внутренний список:
import { Transform } from './core/components/Transform'
export class Game {
private registeredComponents: Set<typeof Behavior> = new Set<typeof Behavior>()
public registerComponent(component: typeof Behavior): void {
this.registeredComponents.add(component)
}
public instantiate() {
const gameObject = new GameObject()
const transform = new Transform(gameObject)
// Do some other stuff
}
}
Здесь я использую свой декоратор для Transform:
@Component()
export class Transform extends Behavior {
public position: Vector3 = Vector3.zero
}
Вот так выглядит декоратор :
export function Component() {
return (target: typeof Behavior): void => {
game.registerComponent(target)
}
}
Использование
В другом проекте, который я использую для использования этой библиотеки, он выглядит следующим образом:
import { game, PrefabUtil } from 'gameengine'
class Item extends PrefabUtil { }
game.instantiate(Item)