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
| Typ | Beschreibung |
|---|---|
gltfModel | GLTF/GLB-Modell (mit DRACO-Komprimierungsunterstützung) |
texture | THREE.Texture (PNG, JPG, usw.) |
cubeTexture | THREE.CubeTexture (6 Gesichtspfade) |
sound | Audio-Puffer |
svg | SVG-Datei |
font | Schriftartdatei |
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
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
sources | Asset[] | Die zu ladenden Asset-Definitionen |
items | Record<string, AssetType> | Geladene Assets nach Namen geordnet |
loaded | number | Anzahl der bisher geladenen Assets |
toLoad | number | Gesamtzahl der zu ladenden Assets |