找回密码
 立即注册
查看: 275|回复: 0

C# 脚本与Unity Visual Scripting 交互,第一步(使用C# ...

[复制链接]
发表于 2022-9-13 17:51 | 显示全部楼层 |阅读模式
写在前面
感谢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>
[UnitTitle("TestEvent")]
[UnitCategory("Events\\MyEvents")]
public class TestEvent : EventUnit<int>
{
    /// <summary>
    /// 定义参数输出
    /// </summary>
    [DoNotSerialize]
    public ValueOutput result { get; private set; }// The Event output data to return when
    protected override bool register => true;
    /// <summary>
    /// 其实
    /// </summary>
    /// <param name="reference"></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>("output");
    }
    /// <summary>
    /// 设置参数传入流中
    /// </summary>
    /// <param name="flow"></param>
    /// <param name="data"></param>
    protected override void AssignArguments(Flow flow, int data)
    {
        flow.SetValue(result, data);
    }

}
编写完成后记得保存代码,并且在项目设置中点击刷新一下Visual Scripting的Nodes



还记得在代码 写的目录和 名称吗

  • Events\\MyEvents
  • TestEvent





成功添加了这个节点 输出目前是一个int 类型


为了让大家看的清楚一点 我输出了


编写一个触发脚本




成功触发了,这时候我就可以愉快的将 Unity的连连看和自己写的逻辑联系在一起了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 11:25 , Processed in 0.090830 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表