Ressourcen

Ressourcen

Asynchrones Asset-Laden mit Fortschrittsverfolgung und Event-Callbacks.

Die Resources-Klasse verwaltet das asynchrone Laden aller Spiel-Assets. Sie unterstützt GLTF-Modelle (mit DRACO-Komprimierung), Texturen, Cube-Texturen, Audio, SVG und Fonts.

// Zugriff über game.resources
const resources = game.resources

Assets definieren

Gib ein Array von Asset-Objekten vor dem Start des Spiels an:

import type { Asset } from '@mavonengine/core'

const assets: Asset[] = [
  {
    name: 'character',
    type: 'gltfModel',
    path: '/models/character.glb',
  },
  {
    name: 'skybox',
    type: 'cubeTexture',
    path: [
      '/textures/sky/px.jpg',
      '/textures/sky/nx.jpg',
      '/textures/sky/py.jpg',
      '/textures/sky/ny.jpg',
      '/textures/sky/pz.jpg',
      '/textures/sky/nz.jpg',
    ],
  },
  {
    name: 'footstep',
    type: 'sound',
    path: '/audio/footstep.mp3',
  },
]

Asset-Pfade sind relativ zum public/-Ordner deines Projekts, der unter / bereitgestellt wird. Eine Datei unter public/models/character.glb wird also als /models/character.glb referenziert.

Übergib Assets an die Resources-Instanz (normalerweise beim Spiel-Init).

Asset-Typen

TypBeschreibung
gltfModelGLTF/GLB-Modell (mit DRACO-Komprimierungsunterstützung)
textureTHREE.Texture (PNG, JPG, usw.)
cubeTextureTHREE.CubeTexture (6 Gesichtspfade)
soundAudio-Puffer
svgSVG-Datei
fontSchriftartdatei

Auf geladene Assets zugreifen

Nach dem Laden kannst du über resources.items nach Namen auf Assets zugreifen:

const characterGltf = resources.items['character'] // GLTF
const skybox = resources.items['skybox'] // THREE.CubeTexture

Fortschrittsverfolgung

resources.on('progress', ({ loaded, total }) => {
  const percent = Math.round((loaded / total) * 100)
  console.log(`Laden: ${percent}%`)
})

resources.on('loaded', () => {
  console.log('Alle Assets bereit — Spiel wird gestartet')
})

Eigenschaften

EigenschaftTypBeschreibung
sourcesAsset[]Die zu ladenden Asset-Definitionen
itemsRecord<string, AssetType>Geladene Assets nach Namen geordnet
loadednumberAnzahl der bisher geladenen Assets
toLoadnumberGesamtzahl der zu ladenden Assets