Prefabs are YAML objects which allow you to easily create similar objects
without duplicating code. You can place as many prefabs in a file as you want,
as long as they are separated by a ---
. They must have a Name
field,
and they may have any property that an object definition can have. An example
prefab file may look like this:
prefab1.yml
---
Name: Prefab1
Material: Mat1
Mesh: MyMesh2
PointLight:
Color: !Vector3 1 1 1
FalloffRadius: 0.5
Brightness: 1
---
Name: Prefab2
Mesh: MyMesh37
Material: Mat62
Any GameObject
defined by YAML can extend a prefab. To do so, simply add an
InstanceOf
field to your object definition. Any field defined
in a prefab and an object will be overridden by the object. An example may look
like this:
object1.yml
---
Name: Object1
InstaceOf: Prefab1
---
Name: Object2
InstanceOf: Prefab2
Mesh: MyMesh8
To create an instance of a prefab from inside your D scripts, import
core.prefabs
(or just core
), and call to
Prefab.createInstance
.
An example script may look like this:
...
auto newObj = Prefabs["BaseObj"].createInstance();
newObj.addComponent( Assets.get!Mesh( "Mesh62" ) );
...