ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2022-09-12 15:34:46  阅读:301  来源: 互联网

标签:脚本 Script C# Graph TestEvent Unity override using Scripting


写在前面

感谢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

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

  • Events\\MyEvents
  • TestEvent

 

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

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

编写一个触发脚本

 

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

 

标签:脚本,Script,C#,Graph,TestEvent,Unity,override,using,Scripting
来源: https://www.cnblogs.com/zhaofangzhou/p/16686292.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有