创建自定义节点
创建一个简单的自定义节点
1.创建c#脚本
using Unity.VisualScripting;
using UnityEngine;
public class MyNode : Unit
{
protected override void Definition() //The method to set what our node will be doing.
{
}
}
2.配置项目设置以重新生成节点库
1)Edit > Project Settings
2)选择Visual Scripting,点击Regenerate Nodes
3.打开一个Script Graph,添加你的节点
为你的节点添加port
1.修改c#脚本
using Unity.VisualScripting;
using UnityEngine;
using System;
[UnitCategory("FirstLevel/SecondLevel")]
public class MyNode : Unit
{
public ControlInput inputTrigger;
public ControlOutput outputTrigger;
[DoNotSerialize]
public ValueInput myValueA;
[DoNotSerialize]
public ValueInput myValueB;
[DoNotSerialize]
public ValueOutput result;
private string resultValue;
protected override void Definition() //The method to set what our node will be doing.
{
//The lambda to execute our node action when the inputTrigger port is triggered.
inputTrigger = ControlInput("inputTrigger", (flow) =>
{
//Making the resultValue equal to the input value from myValueA concatenating it with myValueB.
resultValue = flow.GetValue<string>(myValueA) + flow.GetValue<string>(myValueB) + "!!!";
return outputTrigger;
});
outputTrigger = ControlOutput("outputTrigger");
myValueA = ValueInput<string>("myValueA", "Hello");
myValueB = ValueInput<string>("myValueB", String.Empty);
result = ValueOutput<string>("result", (flow) => resultValue);
}
}
建立State machine
1.新建State Graph
1)在project面板中,Create > Visual scripting > State Graph
2)取名EnemyStateGraph
2.打开上一步建立的State Graph(EnemyStateGraph)
3.创建一个state
1)创建一个Script State
鼠标右键 > Create Script State
ps:更多信息见 Create a new state | Visual Scripting | 1.7.8
2)创建剩下两个Script State
3)双击start,打开start状态
4)添加功能
4.创建state之间的transition
1)右键start状态,选择Make Transition
ps:更多信息见Create a transition between states | Visual Scripting | 1.7.8
2)双击Transition,打开Transition
3)添加状态转换条件