Compare commits
9 Commits
eb0dab6f1b
...
17aa848bce
Author | SHA1 | Date |
---|---|---|
|
17aa848bce | |
|
1bf393b331 | |
|
8f45a2eb3b | |
|
c406d96cde | |
|
8cae451983 | |
|
16ee9b65c7 | |
|
8e9d021b05 | |
|
ef724eb5bc | |
|
5cbccd96bf |
|
@ -34,21 +34,6 @@ Here's an example of how you can interact with the :ref:`Blackboard<class_Blackb
|
||||||
if blackboard.has_var(speed_var):
|
if blackboard.has_var(speed_var):
|
||||||
# ...
|
# ...
|
||||||
|
|
||||||
If you are accessing a variable that holds an object instance, and it is
|
|
||||||
expected that the instance may be null or freed, you can do it like this:
|
|
||||||
|
|
||||||
.. code:: gdscript
|
|
||||||
|
|
||||||
@export var object_var: StringName = &"object"
|
|
||||||
|
|
||||||
func _tick(delta: float) -> Status:
|
|
||||||
# Get object instance stored in the "object" variable.
|
|
||||||
# - Important: Avoid specifying a type for "obj" in GDScript
|
|
||||||
# to prevent errors when the instance is freed.
|
|
||||||
var obj = blackboard.get_var(object_var)
|
|
||||||
if is_instance_valid(obj):
|
|
||||||
# ...
|
|
||||||
|
|
||||||
It is recommended to suffix variable name properties with ``_var``, like in the example above, which enables the
|
It is recommended to suffix variable name properties with ``_var``, like in the example above, which enables the
|
||||||
inspector to provide a more convenient property editor for the variable. This editor
|
inspector to provide a more convenient property editor for the variable. This editor
|
||||||
allows you to select or add the variable to the blackboard plan, and provides a
|
allows you to select or add the variable to the blackboard plan, and provides a
|
||||||
|
@ -122,13 +107,10 @@ This creates a "blackboard scope chain," where each :ref:`Blackboard<class_Black
|
||||||
and there is no limit to how many blackboards can be in this chain.
|
and there is no limit to how many blackboards can be in this chain.
|
||||||
It's important to note that the :ref:`Blackboard<class_Blackboard>` doesn't modify values in the parent scopes.
|
It's important to note that the :ref:`Blackboard<class_Blackboard>` doesn't modify values in the parent scopes.
|
||||||
|
|
||||||
Scopes are created automatically to prevent naming collisions between contextually separate environments:
|
Some scopes are created automatically. For instance, when using the :ref:`BTNewScope<class_BTNewScope>`
|
||||||
|
and :ref:`BTSubtree<class_BTSubtree>` decorators, or when a :ref:`LimboState<class_LimboState>`
|
||||||
- Within :ref:`BTNewScope<class_BTNewScope>`.
|
has non-empty blackboard plan defined, or when a root-level :ref:`LimboHSM<class_LimboHSM>`
|
||||||
- Under :ref:`BTSubtree<class_BTSubtree>` decorators.
|
node is used. Such scopes prevent naming collisions between contextually separate environments.
|
||||||
- With :ref:`LimboState<class_LimboState>` that have a non-empty blackboard plan defined.
|
|
||||||
- Under :ref:`LimboHSM<class_LimboHSM>` nodes: A new scope is created at the root level,
|
|
||||||
and each :ref:`BTState<class_BTState>` child also receives its own separate scope.
|
|
||||||
|
|
||||||
Sharing data between several agents
|
Sharing data between several agents
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
Loading…
Reference in New Issue