我在 Bolt 里面跑的时候遇到的第一个问题是,他识别不到我的属性……太怪了

我把 value 调成了 public 他居然也没有显示
然后我在 SerializedMonoBehaviour MonoBehaviour 中新建属性和方法他也没有显示,自定义的类啥都不显示

好吧,是需要更新 Bolt
https://forum.unity.com/threads/bolt-can-not-find-my-monobehaviour-scripts-public-method.1132447/

他这个更新很奇怪,我每次带动代码之后,即使我添加了 [IncludeInSettings(true)],也还是要去 Tool/Bolt 里面更新,不然就会一直加载那个被更新的代码

更新了之后还有一个问题就是,可以显示方法但是不显示属性……
看了一下,Asset Store 是有 Bolt Enhanced 可以解决这个问题的
别的……再说吧

Bolt 还有一个问题就是它不支持委托相关的逻辑

测试代码:

Assets/MeowACT/Core/Actor/ActorBase.cs

// ----------------------------------------------
// 作者: 廉价喵
// 创建于: 28/03/2022 17:43
// 最后一次修改于: 02/04/2022 11:55
// 版权所有: CheapMeowStudio
// 描述:
// ----------------------------------------------using System;
using Ludiq;
using Sirenix.OdinInspector;
using UnityEngine;
using UnityEngine.Events;namespace MeowACT
{[IncludeInSettings(true)]public class ActorBase : SerializedMonoBehaviour{/// <summary>/// 血量/// </summary>[Tooltip("血量")] public ActorAttribute<float> HP = new ActorAttribute<float>();/// <summary>/// 最大血量/// </summary>[Tooltip("最大血量")] public ActorAttribute<float> MaxHP = new ActorAttribute<float>();public float Value => HP.Value;public UnityEvent<float> TestUnityEvent;public Func<bool> TestFunc;public Action TestAction;public Predicate<bool> TestPredicate;public delegate void TestDelegateType();public TestDelegateType TestDelegate;public void ExecuteBuff(){}public void ExecuteAbility(){}}
}

将 ActorBase 挂在 GameObject 上,然后再在这个 GameObject 上新建 FlowMachine,新建脚本,可以看到,我虽然能够 Set 委托,但是却没有办法给委托添加监听

开发者原话是说在可视化脚本中使用委托是很困难的
Replicating Action delegate behaviour in Bolt
我在别人的问答里面也看到是这样
https://forum.unity.com/threads/how-to-invoke-an-action-event-from-visual-scripting.1127753/
我的需求是 委托多播的 += 和 -=
但现在 Bolt 使得策划接触不到委托相关的 unit,并且需要程序来封装……我想想就头疼

我现在用的是 Unity2020,装 Bolt
Bolt 在 Unity 2021 开始变成了内置的包,叫做 Visual Scripting
根据它的文档,我应该是有委托的,比如我随便一搜就搜到了一个 Action 的,但是我也没在 Bolt 中找到
https://docs.unity3d.com/Packages/com.unity.visualscripting@1.7/api/Unity.VisualScripting.Action-5.html

然后我又搜到了这个
https://forum.unity.com/threads/how-to-use-callbacks-delegates-with-visual-scripting.1143230/#post-7339760

测试代码:

Assets/MeowACT/Core/Actor/ActorBase.cs

     public Func<bool> TestFunc;public void Awake(){TestFunc += TestFuncDebug;}public bool TestFuncDebug(){Debug.Log("TestFunc is working in C# script");return true;}

测试 Flow:

TestFunc is working in C# script 不会 Debug 出来
好吧,那看来这个帖子的意思并不是 Flow 中的 Custom Event 会触发同名委托

那就真的很难了……

我想到我实习的时候他们用的是 FlowCanvas
我去查了一下,还真的可以
https://flowcanvas.paradoxnotion.com/features-comparison/

测试代码不变

添加委托类型

直接就能连出 invoke

牛啊……

但是我并没有找到一个方式将函数加入委托

比如我尝试加入一个函数指针

或者是从函数里面连出来一个 + 号,都不太行

我查到一个回答,开发者说不推荐使用委托,这会让逻辑变得复杂
https://flowcanvas.paradoxnotion.com/forums/topic/new-list-nodes/

好吧……或许我要想一个别的方式了

顺便,我也测试一下属性,FlowCanvas 确实可以识别到

测试代码

 private float hp;public float HP{get => hp;set => hp = value;}

Flow

或许我可以魔改 FlowCanvas 但是这应该是很深的东西吧……
所以这还要我们实现更多的东西……
比如原来我希望策划能够完全控制 get 和 set 的内容,现在来看,只能用事件了,而使用事件的话,他是没有一个返回值的,所以会很难办到说完全控制内容,比如我原来可以把 set 里面的参数 value 传进来,然后通过委托给出去,这样策划可以修改 value 的内容,但是现在传不了的话,那么就必须放弃在属性里面设置事件,而是要在每一个属性修改之前放一套函数,这个函数最后才是修改变量,比如做一个 SetValue() 里面要经过 Buff 检查 要触发事件,最后才是 value = …
有好有坏吧
好的是这强迫我们定制属性修改流程
坏的是这个流程是确定的
99%的自由
或者说,我们努力的话可能达到99%的自由,但是这还需要努力,并且再怎么努力也完不成最后的1%
嗯……这似乎是合理的,毕竟架构的目的就是消除那1%

[Unity] ACT 战斗系统学习 9:Bolt 和 FlowCanvas相关推荐

  1. [Unity] ACT 战斗系统学习 7:使用 ScriptableObject 制作角色属性 2

    本来我是以为泛型 ScriptableObject 是不可能的 但是我之前在制作技能条件时的尝试让我感觉到一个可能性 当时我是做成这样子的 其实这已经很好看了 当时我是实现了获取一个已知物体的所有字段 ...

  2. [Unity] ACT 战斗系统学习 2:从 Buff 系统开始的思考

    从零开始写,我希望 Buff 系统由三部分组成 BuffSystemSingleton 用于存 Buff 对象池和 Buff 字典,提供创建 Buff,回收 Buff 的功能 BuffManager ...

  3. [Unity] ACT 战斗系统学习 5:使用 ScriptableObject 制作角色属性 1

    首先最重要的是属性 // ---------------------------------------------- // 作者: 廉价喵 // 创建于: 29/03/2022 1:19 // 最后 ...

  4. [Unity] ACT 战斗系统学习 8:使用 ScriptableObject 制作角色属性 3

    之前看的那个生成泛型物体的包,我用 git 连接装不上去 虽然可以用读文件的方式装--但是想想就觉得有点累 然后我又想,他那里很多东西是我不需要的,我要是加了,又给组内成员安装工程添加一个麻烦 然后我 ...

  5. [Unity] ACT 战斗系统学习 4:重构前的第三人称控制器

    重构前,我的控制器是这样子 Assets/MeowACT/Scripts/ThirdPerson/ThirdPerson.cs // --------------------------------- ...

  6. [Unity] ACT 战斗系统学习 3:ScriptableObject

    会议分享的代码 https://github.com/roboryantron/Unite2017 接下来主要研究这个代码 1.FloatVariable 第一个场景,核心是 FloatVariabl ...

  7. [Unity] ACT 战斗系统学习 1:基于委托的事件管理器

    我觉得看视频太慢了,还是看别人源码更快-- 1.664235822/DarkSouls-Demo Github 源码: https://github.com/664235822/DarkSouls-D ...

  8. [Unity] 战斗系统学习 5:构建 TPS 框架 1

    [Unity] ACT 战斗系统学习 4:重构前的第三人称控制器 以前看猴与花果山的文章,感觉大开眼界,但是没做过所以没更多体会 https://zhuanlan.zhihu.com/p/416805 ...

  9. [Unity] 战斗系统学习 4:FlowCanvas 中的 LatentActionNode

    [Unity] 战斗系统学习 2:FlowCanvas 中的 SubGraph 1. 并行执行 FlowScript 可能的魔改方向 其实我原本是想魔改 FlowCanvas 使其支持并行 FlowS ...

最新文章

  1. [YTU]_2638(编程题:多态--动物叫)
  2. BZOJ3231(矩阵连乘,稍有点复杂)
  3. 信息收集——Web目录扫描
  4. ssl 的jks 生成工具
  5. 学习《css世界》笔记之多行文本实现垂直居中
  6. jpush推送格式 swift_Swift - JPush极光推送的使用6(定时推送通知)
  7. Mybatis generator 自动生成代码(实例讲解)
  8. 问卷调查微信小程序源码
  9. coreseek mysql.sock_centos安装coreseek
  10. MATLAB取整操作
  11. 用计算机如何算瓷砖菱形加工,瓷砖菱形铺贴怎么计算面积
  12. 写CSDN博客时,调节字体大小、颜色及其他样式的常用操作方法
  13. android studio 初始化项目加载时间过长或失败问题解决
  14. possible formatting directive
  15. poscms清除html,POSCMS开源内容管理系统 v3.6.0 升级说明
  16. linux NetworkManage和network冲突问题
  17. 从社交图谱看Web3.0在社交领域的探索
  18. 什么是系统集成资质?对于企业的重要性具体是什么?
  19. cat实时监控-入门demo
  20. Windows XP系统中 设置DPI缩放 字体大小的简单方法

热门文章

  1. windows读写linux文件,【转载】在Windows下使用Ext2Fsd极速读写Linux硬盘
  2. 高效能人士的执行四原则(三)——原则2:关注引领性指标
  3. 吴恩达深度学习-Course4第三周作业 yolo.h5文件读取错误解决方法
  4. context capture如进行空三迁移
  5. 一场炫酷之极的时尚show-The Devil Wears Prada
  6. Windows 11遭嫌弃,份额还不及Windows XP
  7. 如何在BPA600添加新的协议
  8. wayos虚拟服务器,WAYOS小区版软路由官方说明
  9. 免费5GB容量个人主页和@My.ID电子邮箱服务
  10. 【ARM微型电脑/IoT设备/嵌入式】Linux Ubuntu 树莓派 Jetson nano设置PTP时间同步