As a designer:
Create Quarks.
Switch between using a Variable or a Constant value.
Add simple modifications to an assigned Variable to procedurally alter its value relative to Variable's value.
Tooltips - You can write a description on your Variable and it shows up in the tooltips where the Variable is used!
Variables you can create:
Animation Curve Variable
Boolean Variable (toggle)
Bounds Variable (box)
BoundsInt Variable (box, but each value must be a whole number)
Color Variable
Double Variable (high precision decimal number)
Float Variable (normal decimal number)
Prefab Variable
Gradient Variable
Int Variable (whole number)
Layer Mask Variable
Long Variable (large whole numbers)
Rect Variable (rectangles)
RectInt Variable (rectangles, but each value must be a whole number)
String Variable (text)
Vector2 Variable (two dimentional coordinate)
Vector2Int Variable (two dimentional coordinate, but each value must be a whole number)
Vector3 Variable (three dimentional coordinate)
Vector3Int Variable (three dimentional coordinate, but each value must be a whole number)
Vector4 Variable (four dimentional coordinate)
As a developer:
Empower your designers by using the ValueRef types instead of the actual type you're need.
Each ValueRef has implicit casts to their containing type and wrapping methods for the type making it easy to use and maintains readability of your code.
You can easily set starting values to your ValueRef fields just like you would with the normal types.
Use the VariableOnly attribute to constrain the usage of your ValueRefs to only Variables.
Supported types:
AnimationCurveRef
BooleanRef
BoundsRef
BoundsIntRef
ColorRef
DoubleRef
FloatRef
PrefabRef
GradientRef
IntRef
LayerMaskRef
LongRef
RectRef
RectIntRef
StringRef
Vector2Ref
Vector2IntRef
Vector3Ref
Vector3IntRef
Vector4Ref
If your project requires a ValueRef for an enum type you've defined, derive the EnumVariable, EnumRef and EnumRefDrawer types. This will allow you to use the derived EnumRef type in the same way as the other ValueRef types.
If your project requires a ValueRef for a specific type which derives from the UnityEngine.Object type, derive the ObjectVariable, ObjectRef and ObjectRefDrawer types. This will allow you to use the derived ObjectRef type in the same way as the other ValueRef types.
You can also create your own types by extending the ValueAsset, ValueRef and optionally the ValueRefDrawer types. This requires some knowledge about editor scripting, but some defaults are provided if you don't care about how it looks.
Some normal attributes have new names