{"id":4116,"date":"2024-03-30T01:16:16","date_gmt":"2024-03-29T17:16:16","guid":{"rendered":"https:\/\/lonelinerd.com\/?p=4116"},"modified":"2024-03-30T01:36:21","modified_gmt":"2024-03-29T17:36:21","slug":"ue5_ai_bt_service_and_task_node","status":"publish","type":"post","link":"https:\/\/lonelinerd.com\/index.php\/2024\/03\/30\/ue5_ai_bt_service_and_task_node\/","title":{"rendered":"[C++\/UE] UE5\u4e2dAI\u958b\u767c\u7684\u4e00\u9ede\u529f\u80fd\u68b3\u7406\uff08\u56db\uff09 \u2013 \u884c\u70ba\u6a39Service\u3001Task\u985e\u578b\u7bc0\u9ede\u8aaa\u660e\u53ca\u884c\u70ba\u6a39\u555f\u52d5"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"4116\" class=\"elementor elementor-4116\">\n\t\t\t\t\t\t<div class=\"elementor-inner\">\n\t\t\t\t<div class=\"elementor-section-wrap\">\n\t\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-155cad6 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"155cad6\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-fdea198\" data-id=\"fdea198\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-29d3a39 elementor-widget elementor-widget-text-editor\" data-id=\"29d3a39\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<h3><span style=\"text-decoration: underline;\"><strong>\u884c\u70ba\u6a39Service\u7bc0\u9ede\u8aaa\u660e<\/strong><\/span><\/h3><ul><li>\u7528\u65bc\u53d6\u4ee3Parallel\u7bc0\u9ede\u7684\u65b9\u6848\uff0c\u53ef\u4ee5\u6dfb\u52a0\u5728Task\u7bc0\u9ede\u6216\u8005Decorator\u7bc0\u9ede\u4e0a\uff0c\u4e26\u53ef\u4ee5\u901a\u904e\u6307\u5b9aInterval\u548cRandom Deviation\u4f86\u63a7\u5236\u8abf\u7528\u7684\u983b\u7387<ul><li>\u53f3\u9375\u7bc0\u9ede -&gt; Add Service<\/li><\/ul><\/li><\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-d9151d7 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"d9151d7\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0f43f80\" data-id=\"0f43f80\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-bedefdb elementor-widget elementor-widget-text-editor\" data-id=\"bedefdb\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<h4><strong><u>\u5167\u7f6eService<\/u><\/strong><\/h4><ul><li><strong>Default Focus<\/strong> \u4f7fAI Controller\u53ef\u4ee5\u5feb\u901f\u8a2a\u554f\u5230\u6307\u5b9a\u7684Actor\uff0c\u800c\u4e0d\u7528\u901a\u904eBlackboard Key\u7372\u53d6<\/li><li><strong>Run EQSQuery<\/strong> \u57f7\u884cEQS\u67e5\u8a62\uff0c\u628a\u67e5\u8a62\u7d50\u679c\u4fdd\u5b58\u5230Blackbboard Key\u4e2d<\/li><\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-a98e86e elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"a98e86e\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-65417ec\" data-id=\"65417ec\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-e39e083 elementor-widget elementor-widget-text-editor\" data-id=\"e39e083\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<h4><span style=\"text-decoration: underline;\"><strong>\u81ea\u5b9a\u7fa9Service<\/strong><\/span><\/h4><ul><li>\u884c\u70ba\u6a39\u4e0a\u65b9\u5de5\u5177\u5217 -&gt; New Service<\/li><li>Service\u85cd\u5716\u81ea\u5e364\u5f0f8\u7a2eFunction\u53ef\u4f9b\u91cd\u8f09\u3002\u4e14\u5e36AI\u5f8c\u7db4\u7684\u624d\u80fd\u62ff\u5230AI Controller\uff0c\u5426\u5247\u53ea\u80fd\u62ff\u5230Actor<ul><li><strong>Receive Activation\uff08AI\uff09<\/strong>\uff1a\u7236\u7bc0\u9ede\u6fc0\u6d3b\u6642\u89f8\u767c<\/li><li><strong>Receive Search Start\uff08AI\uff09<\/strong>\uff1a\u81ea\u8eab\u6240\u5728\u7bc0\u9ede\u6fc0\u6d3b\u6642\u89f8\u767c<\/li><li><strong>Receive Tick\uff08AI\uff09<\/strong>\uff1a\u7bc0\u9ede\u57f7\u884c\u4e2d\u6bcf\u5e40\u89f8\u767c<\/li><li><strong>Receive Deactivation\uff08AI\uff09<\/strong>\uff1a\u7236\u7bc0\u9ede\u7d50\u675f\u6642\u89f8\u767c<\/li><\/ul><\/li><\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-759486b elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"759486b\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-e4e29c0\" data-id=\"e4e29c0\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2a31768 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"2a31768\" data-element_type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-0421d78 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"0421d78\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6766f69\" data-id=\"6766f69\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3bb48a1 elementor-widget elementor-widget-text-editor\" data-id=\"3bb48a1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<h3><span style=\"text-decoration: underline;\"><strong>\u884c\u70ba\u6a39Task\u7bc0\u9ede\u8aaa\u660e<\/strong><\/span><\/h3><ul><li>\u884c\u70ba\u6a39\u5177\u9ad4\u8981\u57f7\u884c\u7684\u884c\u70ba<ul><li>\u53f3\u9375\u7bc0\u9ede -&gt; Add Task<\/li><\/ul><\/li><\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-fc13c6f elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"fc13c6f\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-fd0331b\" data-id=\"fd0331b\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1f9a23f elementor-widget elementor-widget-text-editor\" data-id=\"1f9a23f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<h4><span style=\"text-decoration: underline;\"><strong>\u5167\u7f6eTask<\/strong><\/span><\/h4><ul><li><strong>Finish With Result<\/strong>\uff1a\u76f4\u63a5\u8fd4\u56de\u67d0\u500b\u7d50\u679c\uff08Succeeded\/Failed\/Aborted\/InProgress\uff09<\/li><li><strong>Make Noise<\/strong>\uff1a\u5982\u679cPawn\u4e0a\u6709PawnNoiseEmitter\uff0c\u8a72Task\u5c31\u6703\u5c0d\u5be6\u73fe\u4e86AIHearing\u76e3\u807d\u7684\u5c0d\u8c61\u767c\u9001\u6d88\u606f\uff0c\u901a\u77e5\u4ed6\u5011\u300c\u807d\u5230\u4e86\u300dPawn\u767c\u51fa\u7684Noise<\/li><\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-0242645 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"0242645\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-84e3a94\" data-id=\"84e3a94\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-18cc8bc elementor-widget elementor-widget-code-block-for-elementor\" data-id=\"18cc8bc\" data-element_type=\"widget\" data-widget_type=\"code-block-for-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<pre class='line-numbers theme-okaidia' data-show-toolbar='yes'><code class='language-cpp'>\/\/BTTask_MakeNoise.cpp\r\nEBTNodeResult::Type UBTTask_MakeNoise::ExecuteTask(UBehaviorTreeComponent&amp; OwnerComp, uint8* NodeMemory)\r\n{\r\n    const AController* MyController = Cast&lt;AController&gt;(OwnerComp.GetOwner());\r\n    APawn* MyPawn = MyController ? MyController-&gt;GetPawn() : NULL;\r\n\r\n    if (MyPawn)\r\n    {\r\n        MyPawn-&gt;MakeNoise(Loudnes, MyPawn);\r\n        return EBTNodeResult::Succeeded;\r\n    }\r\n\r\n    return EBTNodeResult::Failed;\r\n}\r\n\r\n\/\/Actor.cpp\r\nvoid AActor::MakeNoise(float Loudness, APawn* NoiseInstigator, FVector NoiseLocation, float MaxRange, FName Tag)\r\n{\r\n    NoiseInstigator = NoiseInstigator ? NoiseInstigator : GetInstigator();\r\n    if ((GetNetMode() != NM_Client) &amp;&amp; NoiseInstigator)\r\n    {\r\n        AActor::MakeNoiseDelegate.Execute(this, Loudness, NoiseInstigator\r\n            , NoiseLocation.IsZero() ? GetActorLocation() : NoiseLocation\r\n            , MaxRange\r\n            , Tag);\r\n    }\r\n}\r\n\r\nvoid AActor::SetMakeNoiseDelegate(const FMakeNoiseDelegate&amp; NewDelegate)\r\n{\r\n    if (NewDelegate.IsBound())\r\n    {\r\n        MakeNoiseDelegate = NewDelegate;\r\n    }\r\n}\r\n\r\n\/\/AISense_Hearing.cpp\r\nvoid UAISense_Hearing::RegisterMakeNoiseDelegate()\r\n{\r\n    AActor::SetMakeNoiseDelegate(FMakeNoiseDelegate::CreateStatic(&amp;UAIPerceptionSystem::MakeNoiseImpl));\r\n}<\/code><\/pre>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-80d92cf elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"80d92cf\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-dee8ed7\" data-id=\"dee8ed7\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-008d106 elementor-widget elementor-widget-text-editor\" data-id=\"008d106\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<ul><li><strong>Move Directly Toward \/ Move To<\/strong><ul><li><strong>Move Directly Toward<\/strong>\uff1a\u4e0d\u4f7f\u7528\u5c0e\u822a\u7cfb\u7d71\uff0c\u4f7fActor\u76f4\u7dda\u79fb\u52d5\u5230\u76ee\u6a19\uff08\u4f4d\u7f6e\uff09<\/li><li><strong>Move To<\/strong>\uff1a\u4f7f\u7528\u5c0e\u822a\u7cfb\u7d71\uff0c\u4f7fActor\u79fb\u52d5\u5230\u76ee\u6a19\uff08\u4f4d\u7f6e\uff09<\/li><li>\u4e3b\u8981\u53c3\u6578\uff1a<ul><li>Acceptable Radius\uff1a\u8ddd\u96e2\u76ee\u6a19\u65bc\u8a72\u534a\u5f91\u5167\u6642\u7bc0\u9ede\u8fd4\u56deSucceeed<ul><li>Reach Test Includes Agent Radius AI\u89d2\u8272\u7684Capsule\u534a\u5f91\u662f\u5426\u8981\u52a0\u5165\u8a08\u7b97\u8003\u616e<\/li><li>Reach Test Includes Goal Radius \u7d42\u9ede\u7684Capsule\u534a\u5f91\u662f\u5426\u8981\u52a0\u5165\u8a08\u7b97\u8003\u616e<\/li><\/ul><\/li><li>Allow Strafe\uff1a\u79fb\u52d5\u671f\u9593\u662f\u5426\u8981\u6ce8\u8996\u8457\u76ee\u6a19<\/li><li>Allow Partial Path \u5982\u679c\u76ee\u6a19\u7121\u6cd5\u5230\u9054\uff0c\u4e5f\u6703\u8d70\u4e00\u689d\u4e0d\u5b8c\u6574\u7684\u8def\u7dda<\/li><li>Track Moving Goal \u6703\u8ffd\u8e64\u4e00\u76f4\u79fb\u52d5\u7684\u76ee\u6a19<\/li><li>Require Navigable End Location \u9700\u4fdd\u8b49\u7d42\u9ede\u662f\u53ef\u88ab\u5c0e\u822a\u9054\u5230\u7684<\/li><li>Observe Blackboard Value \u5982\u679c\u76ee\u6a19\u7684Blackboard Key\u6539\u8b8a\u4e86\uff0c\u8ffd\u8e64\u7684\u76ee\u6a19\u4e5f\u6703\u6539\u8b8a<\/li><\/ul><\/li><\/ul><\/li><\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-4cc5389 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"4cc5389\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6511f45\" data-id=\"6511f45\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-0db5ebc elementor-widget elementor-widget-code-block-for-elementor\" data-id=\"0db5ebc\" data-element_type=\"widget\" data-widget_type=\"code-block-for-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<pre class='line-numbers theme-okaidia' data-show-toolbar='yes'><code class='language-cpp'>\/\/PathFollowingComponent.cpp\r\nFVector UPathFollowingComponent::GetMoveFocus(bool bAllowStrafe) const\r\n{\r\n    FVector MoveFocus = FVector::ZeroVector;\r\n    if (bAllowStrafe &amp;&amp; DestinationActor.IsValid())\r\n    {\r\n        MoveFocus = DestinationActor-&gt;GetActorLocation();\r\n    }\r\n    else\r\n    {\r\n        const FVector CurrentMoveDirection = GetCurrentDirection();\r\n        MoveFocus = *CurrentDestination + (CurrentMoveDirection * FAIConfig::Navigation::FocalPointDistance);\r\n    }\r\n\r\n    return MoveFocus;\r\n}\r\n<\/code><\/pre>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-30d82c6 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"30d82c6\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c85937e\" data-id=\"c85937e\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-e2e8585 elementor-widget elementor-widget-text-editor\" data-id=\"e2e8585\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<ul><li><strong>Play Animation<\/strong>\uff1a\u64ad\u653e\u52d5\u756b<\/li><li><strong>Play Sound<\/strong>\uff1a\u64ad\u653e\u8072\u97f3<\/li><li><strong>Rotate to Face BBEntry<\/strong>\uff1a\u65cb\u8f49\u9762\u5411\u67d0Blackboard Actor Key<\/li><li><strong>Run Behavior<\/strong>\uff1a\u57f7\u884c\u5b50\u6a39\uff08\u904b\u884c\u6642\u4e0d\u53ef\u8b8a\uff09<\/li><li><strong>Run Behavior Dynamic<\/strong>\uff1a\u57f7\u884c\u5b50\u6a39\uff08\u904b\u884c\u6642\u53ef\u8abf\u7528SetDynamicSubtree\u8a2d\u7f6e\u5b50\u6a39\u8cc7\u6e90\uff09<ul><li>Inject Tag\uff1aSetDynamicSubtree\u6642\u7528\u4f86\u67e5\u627e\u5177\u9ad4\u8981\u4fee\u6539\u54ea\u4e00\u500bRun Behavior Dynamic\u4efb\u52d9\u7bc0\u9ede\u7684\u5b50\u6a39\u8cc7\u6e90\u7684<\/li><\/ul><\/li><li><strong>Run EQSQuery<\/strong>\uff1a\u57f7\u884cEQS\u67e5\u8a62\uff0c\u628a\u67e5\u8a62\u7d50\u679c\u4fdd\u5b58\u5230Blackbboard Key\u4e2d<\/li><li><strong>Set Tag Cooldown<\/strong>\uff1a\u914d\u5408Tag Cooldown Decorator\u4f7f\u7528\uff0c\u9632\u6b62\u884c\u70ba\u6a39\u57f7\u884c<\/li><li><strong>Wait<\/strong>\uff1a\u7b49\u5f85<\/li><li><strong>Wait Blackboard Time<\/strong>\uff1a\u7b49\u5f85Blackboard\u4e0a\u67d0\u500bfloat\u503c<\/li><\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-46e81f8 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"46e81f8\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-a051a1f\" data-id=\"a051a1f\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-460d3f0 elementor-widget elementor-widget-text-editor\" data-id=\"460d3f0\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<h4><span style=\"text-decoration: underline;\"><strong>\u81ea\u5b9a\u7fa9Task<\/strong><\/span><\/h4><ul><li>\u884c\u70ba\u6a39\u4e0a\u65b9\u5de5\u5177\u5217 -&gt; New Task<\/li><li>Task\u85cd\u5716\u81ea\u5e363\u5f0f6\u7a2eFunction\u53ef\u4f9b\u91cd\u8f09\u3002\u4e14\u5e36AI\u5f8c\u7db4\u7684\u624d\u80fd\u62ff\u5230AI Controller\uff0c\u5426\u5247\u53ea\u80fd\u62ff\u5230Actor<ul><li><strong>Receive Execute<\/strong>\uff1a\u7bc0\u9ede\u958b\u59cb\u57f7\u884c\u6642\u89f8\u767c<ul><li>\u57f7\u884c\u5b8c\u7562\u9700\u8981\u5206\u5225\u8abf\u7528FinishExecute(Success = true)\uff0c\u548cFinishExecute(Success = false)\uff0c\u5426\u5247\u7bc0\u9ede\u57f7\u884c\u6703\u5835\u585e<\/li><\/ul><\/li><li><strong>Receive Tick<\/strong>\uff1a\u7bc0\u9ede\u57f7\u884c\u4e2d\u6bcf\u5e40\u89f8\u767c<\/li><li><strong>Receive Abort<\/strong>\uff1a\u7bc0\u9ede\u7d50\u675f\/\u6253\u65b7\u6642\u89f8\u767c<ul><li>\u57f7\u884c\u5b8c\u7562\u9700\u8981\u5206\u5225\u8abf\u7528FinishAbort(Success = true)\uff0c\u548cFinishAbort(Success = false)\uff0c\u5426\u5247\u7bc0\u9ede\u57f7\u884c\u6703\u5835\u585e<\/li><\/ul><\/li><\/ul><\/li><\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-c7e2b5c elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"c7e2b5c\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-47d66cc\" data-id=\"47d66cc\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-9c02e75 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"9c02e75\" data-element_type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-b8ee847 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b8ee847\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1c58da3\" data-id=\"1c58da3\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d1f9b35 elementor-widget elementor-widget-text-editor\" data-id=\"d1f9b35\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<h3><span style=\"text-decoration: underline;\"><strong>\u884c\u70ba\u6a39\u555f\u52d5\u53ca\u904b\u884c<\/strong><\/span><\/h3><ul><li>\u5728AI\u89d2\u8272\u7684AI Controller\u85cd\u5716\u4e2d\uff0c\u5728\u9069\u7576\u7684\u6642\u6a5f\uff08\u5982Event Begin Play\uff09\u88e1\u76f4\u63a5\u555f\u52d5\u5c0d\u61c9\u7684\u884c\u70ba\u6a39\u5373\u53ef =&gt; Run Behavior Tree, BTAsset = \u884c\u70ba\u6a39\u8cc7\u6e90<ul><li>\u4e0d\u904e\u9700\u8981\u6ce8\u610fAI\u89d2\u8272\u914d\u7f6e\u4e2d\u7684Auto Possess AI\u4e0d\u80fdDisabled\uff0c\u5426\u5247\u5c31\u8981\u5982\u4e0a\u6587\u5beb\u7684\uff0c\u9700\u8981\u624b\u52d5Possess\u5f8c\u518d\u555f\u52d5<\/li><\/ul><\/li><\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-67f1e29 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"67f1e29\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-aa35140\" data-id=\"aa35140\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d84cfbc elementor-widget elementor-widget-image\" data-id=\"d84cfbc\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"553\" height=\"255\" src=\"https:\/\/lonelinerd.com\/wp-content\/uploads\/2024\/03\/BT_Run.png\" class=\"attachment-large size-large wp-image-4118\" alt=\"\" srcset=\"https:\/\/lonelinerd.com\/wp-content\/uploads\/2024\/03\/BT_Run.png 553w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2024\/03\/BT_Run-300x138.png 300w\" sizes=\"auto, (max-width: 553px) 100vw, 553px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-e6ef643 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"e6ef643\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-fc4bfe0\" data-id=\"fc4bfe0\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-16840b8 elementor-widget elementor-widget-text-editor\" data-id=\"16840b8\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<ul><li>\u57f7\u884c\u9806\u5e8f\u70ba\u7531\u4e0a\u81f3\u4e0b\uff0c\u7531\u5de6\u5f80\u53f3<\/li><\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-919a6b1 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"919a6b1\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4c71739\" data-id=\"4c71739\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-866c8eb elementor-widget elementor-widget-image\" data-id=\"866c8eb\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"553\" height=\"351\" src=\"https:\/\/lonelinerd.com\/wp-content\/uploads\/2024\/03\/BTFlow.gif\" class=\"attachment-large size-large wp-image-4119\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-14985b0 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"14985b0\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-f98b69f\" data-id=\"f98b69f\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7c2128d elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"7c2128d\" data-element_type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u672c\u7bc7\u70baUE AI\u7cfb\u5217\u7684\u7b2c\u56db\u90e8\u5206\uff1a\u884c\u70ba\u6a39Service\u3001Task\u985e\u578b\u7bc0\u9ede\u8aaa\u660e\u53ca\u884c\u70ba\u6a39\u7684\u555f\u52d5<\/p>\n","protected":false},"author":1,"featured_media":4068,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,17],"tags":[],"class_list":["post-4116","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programming-notes","category-devnotes"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/lonelinerd.com\/wp-content\/uploads\/2024\/03\/FeatureCover_Unreal5ArtificialIntelligence.png","_links":{"self":[{"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/posts\/4116","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/comments?post=4116"}],"version-history":[{"count":5,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/posts\/4116\/revisions"}],"predecessor-version":[{"id":4124,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/posts\/4116\/revisions\/4124"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/media\/4068"}],"wp:attachment":[{"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/media?parent=4116"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/categories?post=4116"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/tags?post=4116"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}