In order to help developers load multiple assets, Babylon.js (starting with version 1.14) introduced the AssetsManager class.
This class can be used to import meshes into a scene or load text and binary files.
To use it, you just have to instantiate it with a current scene:
var assetsManager = new BABYLON.AssetsManager(scene);
Then you can add tasks to the manager:
var meshTask = assetsManager.addMeshTask("skull task", "", "scenes/", "skull.babylon");
Each task provides an onSuccess
and an onError
callback:
meshTask.onSuccess = function (task) {
task.loadedMeshes[0].position = BABYLON.Vector3.Zero();
}
You can do the same thing but with text and binary files:
var textTask = assetsManager.addTextFileTask("text task", "msg.txt");
textTask.onSuccess = function(task) {
console.log(task.text);
}
var binaryTask = assetsManager.addBinaryFileTask("binary task", "grass.jpg");
binaryTask.onSuccess = function (task) {
// Do something with task.data
}
Images are also supported through imageTask:
var imageTask = assetsManager.addImageTask("image task", "img.jpg");
imageTask.onSuccess = function(task) {
console.log(task.image.width);
}
Textures can also be loaded, through textureTask:
var textureTask = assetsManager.addTextureTask("image task", "img.jpg");
textureTask.onSuccess = function(task) {
material.diffuseTexture = task.texture;
}
The manager itself provides three callbacks:
assetsManager.onFinish = function(tasks) {
engine.runRenderLoop(function() {
scene.render();
});
};
Finally, to launch all the tasks, you have to call:
assetsManager.load();
By default, the AssetsManager will display a loading screen while loading assets:
If you want to disable the loading screen, you have to set useDefaultLoadingScreen
to false:
assetsManager.useDefaultLoadingScreen = false;
The loading screen will also be displayed while loading a scene using SceneLoader if ShowLoadingScreen
is set to true (by default).
BABYLON.SceneLoader.ShowLoadingScreen = false;
In the same way, you can also display or hide the loading screen manually using these functions:
engine.displayLoadingUI();
engine.hideLoadingUI();
Loading text is controlled using loadingUIText
:
engine.loadingUIText = "text";
Background color is controlled using loadingUIBackgroundColor
:
engine.loadingUIBackgroundColor = "red";