3

C# 脚本与Unity Visual Scripting 交互,第一步(使用C# 脚本触发Script Graph的事件...

 2 years ago
source link: https://www.cnblogs.com/zhaofangzhou/p/16686292.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

C# 脚本与Unity Visual Scripting 交互,第一步(使用C# 脚本触发Script Graph的事件)(Custom Scripting Event)

感谢Unity 川哥的帮助,解决了单独调用GameObject的需求


首先 需要在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

882950-20220912151143003-1762856657.png

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

  • Events\\MyEvents
  • TestEvent
882950-20220912151313512-1349478733.png
882950-20220912151242496-186632815.png

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

882950-20220912151434145-2045282047.png

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

882950-20220912151453672-1397831643.png

编写一个触发脚本

882950-20220912151537658-2059696462.png

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

882950-20220912151621232-47568815.png

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK