05 Lists
Last updated
Last updated
This example shows you how to use lists in a blackboard.
These files can be found in the /Examples/[example] and /Blackboards/Examples folders.
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using CrashKonijn.Blackboard.Contracts;
using UnityEngine;
namespace BlackboardsLite
{
public partial class ListBlackboard : BlackboardBehaviour
{
private int startHealth = 100;
// Lists can be of any type
private List<int> changes;
// This is a computed property, showing health being equal to startHealth plus the sum of all changes.
private static int health(Signals.StartHealth startHealth, Signals.Changes changes) => startHealth.Value + changes.Value.Sum(x => x);
}
}
using BlackboardsLite;
using CrashKonijn.Blackboard.Contracts;
using UnityEngine;
namespace CrashKonijn.BlackboardPro.Examples._05_lists
{
[RequireComponent(typeof(ListBlackboard))]
public class ListsHealthBehaviour : MonoBehaviour
{
/* Simple hack to show a button in the editor */
[Header("Removes 10 health.")]
[Button(nameof(DoDamage))]
public string doDamageButton;
/* Simple hack to show a button in the editor */
[Header("Adds 10 health")]
[Button(nameof(Heal))]
public string healButton;
/* Simple hack to show a button in the editor */
[Header("Clears the changes list")]
[Button(nameof(Clear))]
public string clearButton;
private ListBlackboard blackboard;
public ListBlackboard Blackboard
{
get
{
if (this.blackboard == null)
{
this.blackboard = this.GetComponent<ListBlackboard>();
}
return this.blackboard;
}
}
public void DoDamage()
{
this.Blackboard.Changes.Add(-10);
}
public void Heal()
{
this.Blackboard.Changes.Add(10);
}
public void Clear()
{
this.Blackboard.Changes.Clear();
}
}
}