3
C# 脚本与Unity Visual Scripting 交互,第一步(使用C# 脚本触发Script Graph的事件...
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.
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
还记得在代码 写的目录和 名称吗
- Events\\MyEvents
- TestEvent
成功添加了这个节点 输出目前是一个int 类型
为了让大家看的清楚一点 我输出了
编写一个触发脚本
成功触发了,这时候我就可以愉快的将 Unity的连连看和自己写的逻辑联系在一起了
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK