C# 脚本与Unity Visual Scripting 交互,第一步(使用C# ...
写在前面感谢Unity 川哥的帮助,解决了单独调用GameObject的需求
<hr/>首先 需要在Unity 中创建一个自定义事件脚本(注释非常重要)
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
/// <summary>
/// UnitTitle 在Script Graph 中展示的名字
/// UnitCategory 在Script Graph 展示的目录层级
/// EventUnit<int> 泛型 int 是输出参数的类型
/// </summary>
public class TestEvent : EventUnit<int>
{
/// <summary>
/// 定义参数输出
/// </summary>
public ValueOutput result { get; private set; }// The Event output data to return when
protected override bool register => true;
/// <summary>
/// 其实
/// </summary>
/// <param name=&#34;reference&#34;></param>
/// <returns></returns>
public override EventHook GetHook(GraphReference reference)
{
// 特别声明 如果不传递 gameObject 则调用时 会调用所有 Script Graph 使用的事件
return new EventHook(nameof(TestEvent),reference.gameObject);
}
/// <summary>
/// 定义函数 展示输出事件
/// </summary>
protected override void Definition()
{
base.Definition();
// 设置输出的类型和显示的名字
result = ValueOutput<int>(&#34;output&#34;);
}
/// <summary>
/// 设置参数传入流中
/// </summary>
/// <param name=&#34;flow&#34;></param>
/// <param name=&#34;data&#34;></param>
protected override void AssignArguments(Flow flow, int data)
{
flow.SetValue(result, data);
}
}
编写完成后记得保存代码,并且在项目设置中点击刷新一下Visual Scripting的Nodes
还记得在代码 写的目录和 名称吗
[*]Events\\MyEvents
[*]TestEvent
成功添加了这个节点 输出目前是一个int 类型
为了让大家看的清楚一点 我输出了
编写一个触发脚本
成功触发了,这时候我就可以愉快的将 Unity的连连看和自己写的逻辑联系在一起了
页:
[1]