Les traits , comme vous l'avez peut-être deviné dans les articles précédents, sont le système de script d'Armory. Si vous avez travaillé avec le moteur Source, vous vous souvenez probablement de ces cubes roses - là, ils étaient appelés Entités. C'est donc avec nous, l'essence est la même. Dans notre cas, les traits utilisés ne peuvent être consultés dans l' Outliner qu'en passant à la vue Données orphelines dans Collections . Ceci est extrêmement gênant car il n'y a pas d'affichage visuel dans les scripts de la scène.
Types de traits
Les traits sont divisés en plusieurs types:
Haxe - écrire des scripts à partir de zéro dans Haxe.
Wasm - voir WebAssembly .
UI - fonctionne par l'interface utilisateur.
Bundled - scripts Haxe prêts / groupés.
Nodes - Logic Editor ( blueprints UE4).
(!) .
Fake User
Logic Editor traits - . , Blender . trait . , .
Traits Events
Trait :
Trait.notifyOnAdd() - trait.
Trait.notifyOnInit() - .
Trait.notifyOnRemove() - .
Trait.notifyOnUpdate() - .
Trait.notifyOnRender() - .
Trait.notifyOnRender2D() - 2D.
. , onInit . trait , Scene.active.notifyOnInit() - .
traits
Blender. @prop. var . Final , trait Haxe Reflection API, .
:
:
Int
Float
Boolean
String
:
:
package arm;
// See below ("Object data types")
import iron.object.CameraObject;
import iron.math.Vec2;
import iron.math.Vec3;
import iron.math.Vec4;
class MyTrait extends iron.Trait {
// Primitive data types
@prop
var intValue: Int = 40; // Type annotation possible, but not required
@prop
var floatValue = 3.14;
@prop
var stringValue = "Hello world!";
@prop
var booleanValue = true;
// Object data types
@prop
var objValue: iron.object.Object; // Needs type annotation to be recognized
@prop
var camObjValue: CameraObject; // Type can be imported (see above)...
@prop
var lightObjValue: iron.object.LightObject; // .. or not, both will work
@prop
var meshObjValue: iron.object.MeshObject;
@prop
var speakerObjValue: iron.object.SpeakerObject;
// Vector data types
@prop
var vector2DValue: Vec2 = new Vec2(0.2, 0.5); // Initialization possible...
@prop
var vector3DValue: Vec3; //... but not required
@prop
var vector4DValue = new Vec4(1, 2, 3, 4);
// Not visible in Blender, `@prop` is missing
var notVisibleValue = 0.0;
// ...
}
:
@prop:
@prop
, , .
traits sources/ arm. - , - . .
, Haxe package syntax traits. trait general.BoxBehavior - Sources/arm/general «BoxBehavior.hx»
, traits : «general.terrain.TerrainCollider» «TerrainCollider.hx» «Sources/arm/ general/terrain».
, Class .