C#スクリプトからグラフの挙動を変えたい場合は、直接グラフ関連のメンバーを呼び出すか、C#のeventやUnityEventを用意しメンバーアクセスのスクリプト生成機能を介してEventComponentで待ち受けるかのいずれかです。
メンバーを直接呼び出す場合はC#のコーディング知識が必要です。
変数の値を設定する場合は、対象の
LogicBehaviorや
LogicPlayer→
LogicController→
Blackboard→
TryGetVariable→
TrySetValue<T>という順番でアクセスすると設定できます。
詳細はスクリプトリファレンスや同梱している内部コードを参照してお望みの機能を実装してください。
もしC#の書き方などがわからない場合はアセットサポートの範疇を超えますので、ここでは個別にお答えできません。
書籍などでの学習をお勧めいたします。
C#のeventやUnityEventを介す場合は、スクリプトにeventやUnityEventを宣言して任意のタイミングで呼び出すコードを作成(asmdefでアセンブリも適切に設定)すると、ノード選択メニューのMembersタブからそのeventを参照できます。
使用すればeventが呼ばれた際に実行するノードが作成できるようになり、そこからFoundPlayerの変更が行えます。
同じ方式のPubOnTriggerEnterやPubOnTriggerStayなどのスクリプトも同梱していますので参考にしてみてください。
私個人の考えとしては、後者の方法を推奨します。
たとえばLogicToolkitに依存しない「センサー機能」のようなスクリプトを別途作成し、C#のeventやUnityEventを介してLogicToolkitのグラフ側でイベントを待ち受ける方式です。
機能が分離しており明確化できますので、あとでのデバッグもしやすくなるかと思います。
好みや場合によりけりですが、ひとつの参考になれば幸いです。
hatena wrote: ↑2024/08/11 09:13
ロードマップにある「ルートBlackboardへの外部アクセス」
こちらは「グラフから別グラフの変数を参照したり変更したりもできたほうが良いな~」という計画ですね。
スクリプトからの直接/間接的なアクセスは現バージョンでも可能です。
C#スクリプトからグラフの挙動を変えたい場合は、直接グラフ関連のメンバーを呼び出すか、C#のeventやUnityEventを用意しメンバーアクセスのスクリプト生成機能を介してEventComponentで待ち受けるかのいずれかです。
メンバーを直接呼び出す場合はC#のコーディング知識が必要です。
変数の値を設定する場合は、対象の[url=https://logictoolkit-docs.caitsithware.com/ja/scriptreference/LogicToolkit/Types/LogicBehavior.html]LogicBehavior[/url]や[url=https://logictoolkit-docs.caitsithware.com/ja/scriptreference/LogicToolkit/Types/LogicPlayer.html]LogicPlayer[/url]→[url=https://logictoolkit-docs.caitsithware.com/ja/scriptreference/LogicToolkit/Types/LogicController.html]LogicController[/url]→[url=https://logictoolkit-docs.caitsithware.com/ja/scriptreference/LogicToolkit/Types/Blackboard.html]Blackboard[/url]→[url=https://logictoolkit-docs.caitsithware.com/ja/scriptreference/LogicToolkit/Types/Blackboard/M-TryGetVariable.html]TryGetVariable[/url]→[url=https://logictoolkit-docs.caitsithware.com/ja/scriptreference/LogicToolkit/Types/ValueFlowExtensions/MS-TrySetValue.html]TrySetValue<T>[/url]という順番でアクセスすると設定できます。
詳細はスクリプトリファレンスや同梱している内部コードを参照してお望みの機能を実装してください。
もしC#の書き方などがわからない場合はアセットサポートの範疇を超えますので、ここでは個別にお答えできません。
書籍などでの学習をお勧めいたします。
C#のeventやUnityEventを介す場合は、スクリプトにeventやUnityEventを宣言して任意のタイミングで呼び出すコードを作成(asmdefでアセンブリも適切に設定)すると、ノード選択メニューのMembersタブからそのeventを参照できます。
使用すればeventが呼ばれた際に実行するノードが作成できるようになり、そこからFoundPlayerの変更が行えます。
同じ方式のPubOnTriggerEnterやPubOnTriggerStayなどのスクリプトも同梱していますので参考にしてみてください。
私個人の考えとしては、後者の方法を推奨します。
たとえばLogicToolkitに依存しない「センサー機能」のようなスクリプトを別途作成し、C#のeventやUnityEventを介してLogicToolkitのグラフ側でイベントを待ち受ける方式です。
機能が分離しており明確化できますので、あとでのデバッグもしやすくなるかと思います。
好みや場合によりけりですが、ひとつの参考になれば幸いです。
[quote=hatena post_id=73 time=1723367615 user_id=61]
ロードマップにある「ルートBlackboardへの外部アクセス」
[/quote]
こちらは「グラフから別グラフの変数を参照したり変更したりもできたほうが良いな~」という計画ですね。
スクリプトからの直接/間接的なアクセスは現バージョンでも可能です。