• 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;
    
    /// 
    /// UnitTitle 在Script Graph 中展示的名字
    /// UnitCategory 在Script Graph 展示的目录层级
    /// EventUnit 泛型 int 是输出参数的类型
    /// 
    [UnitTitle("TestEvent")]
    [UnitCategory("Events\\MyEvents")]
    public class TestEvent : EventUnit<int>
    {
        /// 
        /// 定义参数输出
        /// 
        [DoNotSerialize]
        public ValueOutput result { get; private set; }// The Event output data to return when
        protected override bool register => true;
        /// 
        /// 其实
        /// 
        /// 
        /// 
        public override EventHook GetHook(GraphReference reference)
        {
            // 特别声明 如果不传递 gameObject 则调用时 会调用所有 Script Graph 使用的事件
            return new EventHook(nameof(TestEvent),reference.gameObject);
        }
        /// 
        /// 定义函数 展示输出事件
        /// 
        protected override void Definition()
        {
            base.Definition();
            // 设置输出的类型和显示的名字
            result = ValueOutput<int>("output");
        }
        /// 
        /// 设置参数传入流中
        /// 
        /// 
        /// 
        protected override void AssignArguments(Flow flow, int data)
        {
            flow.SetValue(result, data);
        }
    
    }
    复制代码

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

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

    • Events\\MyEvents
    • TestEvent

     

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

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

    编写一个触发脚本

     

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

     

  • 相关阅读:
    Redis哨兵(Sentinel)模式的配置方法及其在Java中的用法
    Cesium加载离线地图和离线地形
    Java、斐波那契数
    WPF数据模板
    代码随想录算法训练营第38天—动态规划06 | ● 完全背包 ● *518. 零钱兑换 II ● 377. 组合总和 Ⅳ
    java使用MD5加密
    嵌入式-数据进制之间的转换
    Python总结
    【办公自动化】在Excel中按条件筛选数据并存入新的表(文末送书)
    PDF的两种密码忘记了,怎么解决
  • 原文地址:https://www.cnblogs.com/zhaofangzhou/p/16686292.html