unity AI Planner 人工智能简介

刚好看了就大概记录一下,不过这个插件已经停更了,下面以示例工程介绍
这个插件大概就是输入一些可操作行为和行为条件剩下的让AI自己独立思考

AI.Planner大概分为几个功能块

Actions 行为事件

  • 一些行为的事件,例如移动,吃东西等
  • 创建
    • 需要创建一个Actions 的预制体

      • 在这里插入图片描述
      • 创建出来的:在这里插入图片描述
      • OperationalAction 就是你新建继承IOperationalAction的脚本 这里就是选择执行哪个,这个脚本帮助代理执行动作
      • Parameters -先决条件-执行行动的条件。就是例如吃血包要在不满血时候吃就加上条件,(hp<maxhp),然后他满足这个条件AI才会允许可以执行这个行为,具体什么时候就是AI自己去衡量
      • Effect-对象因操作而引起的变化,数值或者创建对象之类的
      • Cost / Reward-采取行动的成本(负)或奖励(肯定)。类似机器学习负值就尽量避免正值就多点做
    • 代码: IOperationalAction 必须要继承这里示例是OttoAction : IOperationalAction<Otto, StateData, ActionKey> Otto是代理,StateData当前状态数据,ActionKey是你Parameters 设定的东西,这里主要几个函数

    • BeginExecution(StateData state, ActionKey action, Otto actor) IOperationalAction 接口的

      • 就是状态进来的事件
    • ContinueExecution(StateData state, ActionKey action, Otto actor) IOperationalAction 接口的

      • 状态持续中一直触发的
    • EndExecution(StateData state, ActionKey action, Otto actor) IOperationalAction 接口的

      • 状态离开
    • UpdateNeeds(StateData state, Otto actor) 不是接口的

      • 他这里主要是所有状态经过他 然后这里面有个死亡终止条件,她的终止条件就是写在这里的

Agents 代理

  • BaseAgent类,它处理规划系统和控制器。此外,该类拥有初始域数据的序列化字段,用户可以在编辑器的检查器窗口中设置这些字段。BaseAgent类继承MonoBehaviour,默认情况下,更新每个框架上的控制器。

  • 这里示例就是Otto继承了 放在角色下面,代理数据预制体也赋值这里

    • 在这里插入图片描述
  • 预制体,这里放置了可进行的行为和终止条件死亡在这里插入图片描述

Enums 自定义枚举类型 例如血量,物品名称等

  • 右键创建在这里插入图片描述
  • 这里就是自定义 属性的名称,例如物品的名称,血量 蓝量都是这里定义在这里插入图片描述,物品建一个罗列有什么,属性也建一个罗列一排在这里插入图片描述
  • 记得按保存他会动态序列化增改枚举类,代码就有这些枚举了

Termination 终止条件

  • 就是代理Agents 终止执行的条件,就是死亡或者别的终止条件
  • 右键创建在这里插入图片描述

Traits 容器

  • 就是储存一些行为所需要的一些数值属性,例如寻路要去睡觉:移动谁这里就会定义Agent 角色,移动目标点 Bed睡床,到达时间这里就需要定义一个Time时间
  • 右键创建在这里插入图片描述
  • 示例这边是有 Agent 角色,Bed 睡床,Dispenser 物品台,Duration持续状态多少时间,Inventory背包属性当然具体背包实现代码还是要写但是框架已经带了一个基础的背包功能就是叫Inventory,Need 这里是一个初始属性他有每秒增加多少和初始值多少,就是用来定义体力 饥饿和疲劳的,Time就是完成时间啦,Workstation 工作台
    • 在这里插入图片描述

使用

  • 大概建立以上五个模块的东西
  • 角色底下建立一个空物体拖脚本,然后赋值代理数据给脚本在这里插入图片描述
  • 角色身上要挂的类DomainObjectProvider 示例有个寻路主要是挂的MotionController在这里插入图片描述
  • 上面主要是放角色含有的一些属性例如otto上的角色和角色的位置属性,还有背包苹果和背包饮料,和三个属性值 ,这些是必须要的
  • 接着就是放置一些行为的地点了每个都会标明是什么,地点在哪
    • 在这里插入图片描述

整体流程

#mermaid-svg-AIndB3xm5Fi8GIYn .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-AIndB3xm5Fi8GIYn .label text{fill:#333}#mermaid-svg-AIndB3xm5Fi8GIYn .node rect,#mermaid-svg-AIndB3xm5Fi8GIYn .node circle,#mermaid-svg-AIndB3xm5Fi8GIYn .node ellipse,#mermaid-svg-AIndB3xm5Fi8GIYn .node polygon,#mermaid-svg-AIndB3xm5Fi8GIYn .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-AIndB3xm5Fi8GIYn .node .label{text-align:center;fill:#333}#mermaid-svg-AIndB3xm5Fi8GIYn .node.clickable{cursor:pointer}#mermaid-svg-AIndB3xm5Fi8GIYn .arrowheadPath{fill:#333}#mermaid-svg-AIndB3xm5Fi8GIYn .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-AIndB3xm5Fi8GIYn .flowchart-link{stroke:#333;fill:none}#mermaid-svg-AIndB3xm5Fi8GIYn .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-AIndB3xm5Fi8GIYn .edgeLabel rect{opacity:0.9}#mermaid-svg-AIndB3xm5Fi8GIYn .edgeLabel span{color:#333}#mermaid-svg-AIndB3xm5Fi8GIYn .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-AIndB3xm5Fi8GIYn .cluster text{fill:#333}#mermaid-svg-AIndB3xm5Fi8GIYn div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-AIndB3xm5Fi8GIYn .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-AIndB3xm5Fi8GIYn text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-AIndB3xm5Fi8GIYn .actor-line{stroke:grey}#mermaid-svg-AIndB3xm5Fi8GIYn .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-AIndB3xm5Fi8GIYn .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-AIndB3xm5Fi8GIYn #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-AIndB3xm5Fi8GIYn .sequenceNumber{fill:#fff}#mermaid-svg-AIndB3xm5Fi8GIYn #sequencenumber{fill:#333}#mermaid-svg-AIndB3xm5Fi8GIYn #crosshead path{fill:#333;stroke:#333}#mermaid-svg-AIndB3xm5Fi8GIYn .messageText{fill:#333;stroke:#333}#mermaid-svg-AIndB3xm5Fi8GIYn .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-AIndB3xm5Fi8GIYn .labelText,#mermaid-svg-AIndB3xm5Fi8GIYn .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-AIndB3xm5Fi8GIYn .loopText,#mermaid-svg-AIndB3xm5Fi8GIYn .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-AIndB3xm5Fi8GIYn .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-AIndB3xm5Fi8GIYn .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-AIndB3xm5Fi8GIYn .noteText,#mermaid-svg-AIndB3xm5Fi8GIYn .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-AIndB3xm5Fi8GIYn .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-AIndB3xm5Fi8GIYn .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-AIndB3xm5Fi8GIYn .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-AIndB3xm5Fi8GIYn .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-AIndB3xm5Fi8GIYn .section{stroke:none;opacity:0.2}#mermaid-svg-AIndB3xm5Fi8GIYn .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-AIndB3xm5Fi8GIYn .section2{fill:#fff400}#mermaid-svg-AIndB3xm5Fi8GIYn .section1,#mermaid-svg-AIndB3xm5Fi8GIYn .section3{fill:#fff;opacity:0.2}#mermaid-svg-AIndB3xm5Fi8GIYn .sectionTitle0{fill:#333}#mermaid-svg-AIndB3xm5Fi8GIYn .sectionTitle1{fill:#333}#mermaid-svg-AIndB3xm5Fi8GIYn .sectionTitle2{fill:#333}#mermaid-svg-AIndB3xm5Fi8GIYn .sectionTitle3{fill:#333}#mermaid-svg-AIndB3xm5Fi8GIYn .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-AIndB3xm5Fi8GIYn .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-AIndB3xm5Fi8GIYn .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-AIndB3xm5Fi8GIYn .grid path{stroke-width:0}#mermaid-svg-AIndB3xm5Fi8GIYn .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-AIndB3xm5Fi8GIYn .task{stroke-width:2}#mermaid-svg-AIndB3xm5Fi8GIYn .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-AIndB3xm5Fi8GIYn .taskText:not([font-size]){font-size:11px}#mermaid-svg-AIndB3xm5Fi8GIYn .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-AIndB3xm5Fi8GIYn .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-AIndB3xm5Fi8GIYn .task.clickable{cursor:pointer}#mermaid-svg-AIndB3xm5Fi8GIYn .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-AIndB3xm5Fi8GIYn .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-AIndB3xm5Fi8GIYn .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-AIndB3xm5Fi8GIYn .taskText0,#mermaid-svg-AIndB3xm5Fi8GIYn .taskText1,#mermaid-svg-AIndB3xm5Fi8GIYn .taskText2,#mermaid-svg-AIndB3xm5Fi8GIYn .taskText3{fill:#fff}#mermaid-svg-AIndB3xm5Fi8GIYn .task0,#mermaid-svg-AIndB3xm5Fi8GIYn .task1,#mermaid-svg-AIndB3xm5Fi8GIYn .task2,#mermaid-svg-AIndB3xm5Fi8GIYn .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-AIndB3xm5Fi8GIYn .taskTextOutside0,#mermaid-svg-AIndB3xm5Fi8GIYn .taskTextOutside2{fill:#000}#mermaid-svg-AIndB3xm5Fi8GIYn .taskTextOutside1,#mermaid-svg-AIndB3xm5Fi8GIYn .taskTextOutside3{fill:#000}#mermaid-svg-AIndB3xm5Fi8GIYn .active0,#mermaid-svg-AIndB3xm5Fi8GIYn .active1,#mermaid-svg-AIndB3xm5Fi8GIYn .active2,#mermaid-svg-AIndB3xm5Fi8GIYn .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-AIndB3xm5Fi8GIYn .activeText0,#mermaid-svg-AIndB3xm5Fi8GIYn .activeText1,#mermaid-svg-AIndB3xm5Fi8GIYn .activeText2,#mermaid-svg-AIndB3xm5Fi8GIYn .activeText3{fill:#000 !important}#mermaid-svg-AIndB3xm5Fi8GIYn .done0,#mermaid-svg-AIndB3xm5Fi8GIYn .done1,#mermaid-svg-AIndB3xm5Fi8GIYn .done2,#mermaid-svg-AIndB3xm5Fi8GIYn .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-AIndB3xm5Fi8GIYn .doneText0,#mermaid-svg-AIndB3xm5Fi8GIYn .doneText1,#mermaid-svg-AIndB3xm5Fi8GIYn .doneText2,#mermaid-svg-AIndB3xm5Fi8GIYn .doneText3{fill:#000 !important}#mermaid-svg-AIndB3xm5Fi8GIYn .crit0,#mermaid-svg-AIndB3xm5Fi8GIYn .crit1,#mermaid-svg-AIndB3xm5Fi8GIYn .crit2,#mermaid-svg-AIndB3xm5Fi8GIYn .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-AIndB3xm5Fi8GIYn .activeCrit0,#mermaid-svg-AIndB3xm5Fi8GIYn .activeCrit1,#mermaid-svg-AIndB3xm5Fi8GIYn .activeCrit2,#mermaid-svg-AIndB3xm5Fi8GIYn .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-AIndB3xm5Fi8GIYn .doneCrit0,#mermaid-svg-AIndB3xm5Fi8GIYn .doneCrit1,#mermaid-svg-AIndB3xm5Fi8GIYn .doneCrit2,#mermaid-svg-AIndB3xm5Fi8GIYn .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-AIndB3xm5Fi8GIYn .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-AIndB3xm5Fi8GIYn .milestoneText{font-style:italic}#mermaid-svg-AIndB3xm5Fi8GIYn .doneCritText0,#mermaid-svg-AIndB3xm5Fi8GIYn .doneCritText1,#mermaid-svg-AIndB3xm5Fi8GIYn .doneCritText2,#mermaid-svg-AIndB3xm5Fi8GIYn .doneCritText3{fill:#000 !important}#mermaid-svg-AIndB3xm5Fi8GIYn .activeCritText0,#mermaid-svg-AIndB3xm5Fi8GIYn .activeCritText1,#mermaid-svg-AIndB3xm5Fi8GIYn .activeCritText2,#mermaid-svg-AIndB3xm5Fi8GIYn .activeCritText3{fill:#000 !important}#mermaid-svg-AIndB3xm5Fi8GIYn .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-AIndB3xm5Fi8GIYn g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-AIndB3xm5Fi8GIYn g.classGroup text .title{font-weight:bolder}#mermaid-svg-AIndB3xm5Fi8GIYn g.clickable{cursor:pointer}#mermaid-svg-AIndB3xm5Fi8GIYn g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-AIndB3xm5Fi8GIYn g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-AIndB3xm5Fi8GIYn .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-AIndB3xm5Fi8GIYn .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-AIndB3xm5Fi8GIYn .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-AIndB3xm5Fi8GIYn .dashed-line{stroke-dasharray:3}#mermaid-svg-AIndB3xm5Fi8GIYn #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-AIndB3xm5Fi8GIYn #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-AIndB3xm5Fi8GIYn #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-AIndB3xm5Fi8GIYn #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-AIndB3xm5Fi8GIYn #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-AIndB3xm5Fi8GIYn #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-AIndB3xm5Fi8GIYn #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-AIndB3xm5Fi8GIYn #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-AIndB3xm5Fi8GIYn .commit-id,#mermaid-svg-AIndB3xm5Fi8GIYn .commit-msg,#mermaid-svg-AIndB3xm5Fi8GIYn .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-AIndB3xm5Fi8GIYn .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-AIndB3xm5Fi8GIYn .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-AIndB3xm5Fi8GIYn g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-AIndB3xm5Fi8GIYn g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-AIndB3xm5Fi8GIYn g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-AIndB3xm5Fi8GIYn g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-AIndB3xm5Fi8GIYn g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-AIndB3xm5Fi8GIYn g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-AIndB3xm5Fi8GIYn .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-AIndB3xm5Fi8GIYn .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-AIndB3xm5Fi8GIYn .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-AIndB3xm5Fi8GIYn .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-AIndB3xm5Fi8GIYn .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-AIndB3xm5Fi8GIYn .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-AIndB3xm5Fi8GIYn .edgeLabel text{fill:#333}#mermaid-svg-AIndB3xm5Fi8GIYn .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-AIndB3xm5Fi8GIYn .node circle.state-start{fill:black;stroke:black}#mermaid-svg-AIndB3xm5Fi8GIYn .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-AIndB3xm5Fi8GIYn #statediagram-barbEnd{fill:#9370db}#mermaid-svg-AIndB3xm5Fi8GIYn .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-AIndB3xm5Fi8GIYn .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-AIndB3xm5Fi8GIYn .statediagram-state .divider{stroke:#9370db}#mermaid-svg-AIndB3xm5Fi8GIYn .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-AIndB3xm5Fi8GIYn .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-AIndB3xm5Fi8GIYn .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-AIndB3xm5Fi8GIYn .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-AIndB3xm5Fi8GIYn .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-AIndB3xm5Fi8GIYn .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-AIndB3xm5Fi8GIYn .note-edge{stroke-dasharray:5}#mermaid-svg-AIndB3xm5Fi8GIYn .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-AIndB3xm5Fi8GIYn .error-icon{fill:#522}#mermaid-svg-AIndB3xm5Fi8GIYn .error-text{fill:#522;stroke:#522}#mermaid-svg-AIndB3xm5Fi8GIYn .edge-thickness-normal{stroke-width:2px}#mermaid-svg-AIndB3xm5Fi8GIYn .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-AIndB3xm5Fi8GIYn .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-AIndB3xm5Fi8GIYn .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-AIndB3xm5Fi8GIYn .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-AIndB3xm5Fi8GIYn .marker{fill:#333}#mermaid-svg-AIndB3xm5Fi8GIYn .marker.cross{stroke:#333}

:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}
#mermaid-svg-AIndB3xm5Fi8GIYn {
color: rgba(0, 0, 0, 0.75);
font: ;
}

Agents代理整合几个模块
交由继承BaseAgent的去思考执行哪个状态行为
执行代码继承自IOperationalAction去实现具体逻辑
状态结束
终止条件

在这里插入图片描述

  • 都只是丢进Agents里面让他自行决定行动,但是具体实现代码还是要写,例如使用物品血量减少50点,在使用该物品效果的代码上要写上减少50,在预制体里面写上减少50是告诉Agents去思考这个操作是这样,不会有具体效果,具体效果要用代
    码去实现 MD坑的一批请添加图片描述
    附上示例工程 https://github.com/Unity-Technologies/otto

好了 以上就是大概简介= =有50个赞我就更下篇

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>