Istanze dei Prefab in 1.2.0
L’istanza di prefab è il processo di creazione di oggetti e componenti da un file .bin
/.glb
.
Poiché il nuovo metodo di istanziazione si basa sul concetto di multiscene, ti consigliamo di dare un’occhiata veloce al nostro post del blog sul multiscene prima di procedere.
Prima della versione 1.2.0
L’istanza di un “prefab” era disponibile tramite il metodo append (ora deprecato):
Questa API presenta delle limitazioni:
- La scena deve essere scaricata e analizzata 100 volte
- Ogni
Zombie.bin
crea nuovi mesh, texture e materiali
Vediamo come Wonderland Engine 1.2.0 aiuta a risolvere questi problemi!
Istanza
Qualsiasi scena caricata tramite loadScene può essere destinataria di un’istanza:
Poiché il risultato è un’istanza Object3D, puoi modificare la gerarchia come segue:
Puoi chiamare instantiate() su scene attive e inattive. Sebbene l’esempio sopra dimostri come utilizzarlo su una scena attiva, l’istanza in una scena inattiva funziona allo stesso modo:
1const zombie = await engine.loadPrefab('Zombie.bin');
2const zombieHead = zombie.findByName('Head')[0];
3zombieHead.addComponent(LookAtComponent);
4
5const nextScene = engine.load('NextScene.bin');
6
7// Solo una volta istanziato, LookAtComponent.onActivate()
8// e LookAtComponent.start() vengono invocati.
9nextScene.instantiate(zombie);
GLTF
L’istanza non è limitata al formato di scena Wonderland Engine (.bin), ma può essere utilizzata anche con glTF:
I prefab glTF hanno anche metodi extra per gestire le estensioni. Per ulteriori informazioni, dai un’occhiata all’API PrefabGLTF.
Nota sulle Risorse
Come menzionato nel post del blog sul multiscene, le risorse vengono spostate nell’istanza engine quando vengono caricate. Questo permette a più scene di fare riferimento alle stesse risorse, senza duplicare la memoria.
I componenti creati tramite instanziazione quindi:
- Fanno riferimento alle stesse risorse
- Eliminare una risorsa farà sì che l’istanza faccia riferimento a un’entrata nulla
Ulteriori Approfondimenti
Ecco alcuni link per aiutarti a iniziare a utilizzare le istanze nei tuoi progetti:
Non vediamo l’ora di vedere come la comunità sfrutterà le istanze per creare esperienze straordinarie!