Zum Inhalt

Basic Scriptable Object Example

[CreateAssetMenu(fileName = "Enemy Stats", menuName = "Blueprints/Enemy Stats")]
public class EnemyStats : ScriptableObject, IBalanceableObject
{
    private string enemyName;
    [Header("Enemy Stats")]
    [SerializeField, BalanceParameter] private int health;
    [SerializeField, BalanceParameter] private float speed;
    [SerializeField, BalanceParameter] private float damage;

    public EntityDescriptor Descriptor => new EntityDescriptor(
        $"enemy_{enemyName.ToLower()}", enemyName, "Enemy"
    );
}

Erklärung

  • Das ScriptableObject implementiert IBalanceableObject
  • Über die Descriptor Property werden die Entity Metadaten definiert
  • Die Felder health, speed, damage sind als BalanceParamater markiert und werden vom Plugin automatisch erkannt