Compare commits
11 Commits
17aa848bce
...
eb0dab6f1b
Author | SHA1 | Date |
---|---|---|
|
eb0dab6f1b | |
|
3af5cba6d5 | |
|
0a11595c02 | |
|
0258d4ee0b | |
|
a08bc541c9 | |
|
291c0d9a76 | |
|
d2d835bb86 | |
|
90a2283798 | |
|
9a5e550504 | |
|
3dcbee829c | |
|
e3be34670e |
|
@ -34,6 +34,21 @@ Here's an example of how you can interact with the :ref:`Blackboard<class_Blackb
|
|||
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
|
||||
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
|
||||
|
@ -107,10 +122,13 @@ 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.
|
||||
It's important to note that the :ref:`Blackboard<class_Blackboard>` doesn't modify values in the parent scopes.
|
||||
|
||||
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>`
|
||||
has non-empty blackboard plan defined, or when a root-level :ref:`LimboHSM<class_LimboHSM>`
|
||||
node is used. Such scopes prevent naming collisions between contextually separate environments.
|
||||
Scopes are created automatically to prevent naming collisions between contextually separate environments:
|
||||
|
||||
- Within :ref:`BTNewScope<class_BTNewScope>`.
|
||||
- Under :ref:`BTSubtree<class_BTSubtree>` decorators.
|
||||
- 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
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
|
Loading…
Reference in New Issue