Verhaltensbäume in Unity: Ein umfassender Leitfaden zur Implementierung mit Scriptable Objects und UI Builder (2023)

In der Welt der Software- und Systementwicklung sind Verhaltensbäume eine formale, grafische Modellierungssprache, die hauptsächlich eingesetzt wird, um die Anforderungen von Stakeholdern für integrierte Softwaresysteme klar und eindeutig zu repräsentieren. Dieser umfassende Leitfaden führt durch die Schritte zur Erstellung eines Verhaltensbaums in Unity mithilfe von Scriptable Objects und dem UI Builder.

Einleitung

Ein Verhaltensbaum, erstellt mit Unity 2021.3.1f1 oder einer neueren Version, dient als Ausführungsbaum, der das Strategie-Muster verwendet und stets mit einem Wurzelknoten beginnt. Dieser Wurzelknoten hat nur ein Kind und markiert den Startpunkt des Verhaltensbaums. In diesem Artikel werden drei Haupttypen von Knoten behandelt: Decorator, Composite Node und Action Node.

Der Node

Um einen Verhaltensbaum zu erstellen, beginnen wir mit der Definition eines abstrakten Node-Typs als Scriptable Object. Jeder Knoten kann einen von drei Zuständen zurückgeben: Running, Success oder Failure. Die Implementierung umfasst abstrakte Methoden wie "Update" und "GetState", die von den spezifischen Knoten implementiert werden.

// Code-Beispiel für abstrakte Node-Klasse
public abstract class Node : ScriptableObject
{
    public enum NodeState { Running, Success, Failure };
    protected NodeState currentState;
    protected bool hasStarted = false;

    public abstract void Initialize();
    public abstract NodeState UpdateNode();
}

Der Verhaltensbaum

Der Verhaltensbaum selbst wird als Scriptable Object erstellt und enthält den Wurzelknoten sowie den Gesamtzustand des Baums. Der Aktualisierungsmethode des Baums spiegelt die Zustandsänderungen der Knoten wider.

// Code-Beispiel für Behavior Tree-Klasse
[CreateAssetMenu(menuName = "Behavior Tree")]
public class BehaviorTree : ScriptableObject
{
    public Node rootNode;
    private NodeState treeState;

    public NodeState UpdateTree()
    {
        if (rootNode == null)
        {
            treeState = NodeState.Failure;
        }
        else
        {
            if (rootNode.UpdateNode() == NodeState.Running)
            {
                rootNode.UpdateNode();
                treeState = rootNode.currentState;
            }
        }
        return treeState;
    }
}

Node-Untertypen

Es werden drei Arten von Knoten behandelt: Decorator Node, Composite Node und Action Node. Decorator Nodes verwenden das Decorator-Muster und haben ein Kind, Composite Nodes haben eine Liste von Kindern und repräsentieren den Kontrollfluss des Verhaltensbaums. Action Nodes sind die Blätter des Baums und enthalten die eigentliche Logik.

// Code-Beispiel für Decorator Node
public abstract class DecoratorNode : Node
{
    public Node childNode;
    // ...
}

// Code-Beispiel für Composite Node
public abstract class CompositeNode : Node
{
    public List<Node> childrenNodes;
    // ...
}

// Code-Beispiel für Action Node
public abstract class ActionNode : Node
{
    // ...
}

Praktische Anwendung

Um den Verhaltensbaum auszuführen, wird ein MonoBehaviour erstellt, das den Verhaltensbaum enthält. Dieses Beispiel verwendet einen Debug Log Node als Wurzelknoten. Durch die Integration von verschiedenen Knotentypen wie Repeat Node, Sequencer Node, Selector Node und Wait Node können komplexe Verhaltensbäume erstellt werden.

// Code-Beispiel für Behavior Tree Runner
public class BehaviorTreeRunner : MonoBehaviour
{
    public BehaviorTree behaviorTree;

    private void Start()
    {
        // Erstellen und Ausführen des Verhaltensbaums
        behaviorTree.rootNode = CreateComplexBehaviorTree();
        behaviorTree.UpdateTree();
    }

    // Methode zur Erstellung eines komplexen Verhaltensbaums
    private Node CreateComplexBehaviorTree()
    {
        // ...
    }
}

Fazit

Die Implementierung von Verhaltensbäumen in Unity ermöglicht die effektive Modellierung von komplexen Verhaltensweisen in Softwareprojekten. Dieser Leitfaden bietet einen umfassenden Einblick in die Erstellung von Verhaltensbäumen unter Verwendung von Scriptable Objects und dem UI Builder in Unity.


Mit diesem umfassenden Leitfaden zur Implementierung von Verhaltensbäumen in Unity bieten wir nicht nur einen praxisnahen Einblick in die Konzepte, sondern auch eine detaillierte Anleitung zur Anwendung in realen Projekten. Von der Definition von Nodes bis zur praktischen Anwendung in einem Behavior Tree Runner – dieser Leitfaden unterstützt Entwickler dabei, komplexe Verhaltensmuster effektiv zu modellieren und in ihre Projekte zu integrieren.

References

Top Articles
Latest Posts
Article information

Author: Nathanael Baumbach

Last Updated: 04/12/2023

Views: 5709

Rating: 4.4 / 5 (75 voted)

Reviews: 82% of readers found this page helpful

Author information

Name: Nathanael Baumbach

Birthday: 1998-12-02

Address: Apt. 829 751 Glover View, West Orlando, IN 22436

Phone: +901025288581

Job: Internal IT Coordinator

Hobby: Gunsmithing, Motor sports, Flying, Skiing, Hooping, Lego building, Ice skating

Introduction: My name is Nathanael Baumbach, I am a fantastic, nice, victorious, brave, healthy, cute, glorious person who loves writing and wants to share my knowledge and understanding with you.