http://blog.sina.com.cn/s/blog_5fb40ceb0102wveq.html

Unity 强大的可视化编程插件,Flowcanvas + Nodecanvas 组合(深度修改版)FSM BehaviorTr

(2017-10-31 16:46:19)

强大的可视化编程插件

Flowcanvas + Nodecanvas 组合(深度修改版)

这是一个结合了

仿虚幻4蓝图(基于事件驱动的可视化编程工具)

Playmaker 有限状态机

Behavior tree  AI行为树

三者功能为一体的强大可视化编程工具.

我在原版插件的基础上,增加修改了一些功能特性: 括号”改” 表示有修改功能 ,括号”新” 表示是新的功能.

-------------------------------------------------------------------------------------------------

绚丽的UI皮肤,按颜色区分不同类型的节点.(改)

红色: 事件Event节点

橙色:flowcontrol节点  控制逻辑走向

蓝色:普通方法 action

绿色:函数方法  function

酒红色: 嵌套节点  Nested Graph Node (FSM BehaviorTree,Flowscript, macro组节点)

黑色:变量节点

灰色:反射方法节点

三者可相互无限深度绑定嵌套,互为节点(状态机,或行为节点)(改)

无需编译,随写随测.

逻辑即是资源,适用热更新.

可视化调试.  实时数据和逻辑走向追踪.  自动定位出错节点.


打钩后, 会自动锁定出错的节点图和节点。

按F (focus selected nodes)对中显示选中的节点;   如果未选择节点,按F,可选中和对中显示出错的节点. (Focus error Node) (新)

 
增加快捷键 ctrl+A  全选节点     按键 i : 反选节点 (新)
 
ctrl +左键框选: 增加框选节点:  shift+左键框选: 减去框选节点;     原先的ctrl +左键 创建组,改成 ctrl+shift+左键.

高效率编辑. 智能节点搜索工具, 快捷键创建节点.  (改)


alt+1 :创建 float节点  alt+2:创建 vector2节点 ; alt+3: vector3     alt+4 :quaternion节点;alt+5: color节点

alt+ctrl+A: 脚本周期节点(awake start update..)
alt+ctrl+S: S字母开头的节点
alt+ctrl+W: W字母开头的节点
alt+ctrl+D: D字母开头的节点
alt+ctrl+F: F字母开头的节点
alt+ctrl+C: C字母开头的节点
alt+ctrl+R: R字母开头的节点
(快捷键可以在graphEditor脚本里按上述例子增加快捷键)

多个节点可封装成一个新节点 节点视图简洁有序.(新)     

选中两个以上节点, 按ctrl+g 坍缩成新的组节点。双击组节点进入组。   选中组节点后按 shift+g  打开组。

点击播放 gif

源码开放,自主定制. 反射调用其他脚本方法属性.

 点击播放 gif

自定义函数节点. (新)  弥补flowscript 发送事件没有返回值的缺点.

Functions节点栏中的 Function组: 三个节点  Function, CallFunction, FunctionReturn.

丰富的功能节点库. 常用Unity API无需反射(新).

方便搜寻和定位节点  FindNode节点

右键点击新建变量按钮,可搜索变量类型。方便查找。 中键是创建List 变量类型。(新)

在FSM和Behavior Tree 节点图里创建FlowScript节点图,默认创建 Awake,OnEnable,OnUpdate,OnDisable和Finish节点(代表了状态的初始化,进入,更新,退出和 控制退出的状态(Finish success or Failure))(新)

增加对ToLua的支持.  可以在节点中直接写入lua语句,执行并返回结果.(新)

易学上手. 适用策划美术.

支持发布多个平台.

集成DOTween插件和节点.  (改) 增加了tweener 单个float数值和vector3 数值的节点

EasyTouch ,FinalIK, CameraPath插件节点(需导入插件,清除相关节点脚本注释)  (新)

......

常见的问题:

嵌套的节点在保存成prefab物体时引用会消失:解决的办法是点击prefab栏的apply按钮,按两次一般会恢复正常。

注意:由于已经修改了很多节点相关的脚本,如果原先已经使用了flowcanvas的项目,最好不要使用此版本,会破坏部分节点图的连线。

适用unity 5.5以上版本

支持正版: https://www.assetstore.unity3d.com/en/#!/content/33903

下载链接: (2018.1.25更新) 修正 function node 名称改变后, 调用此Function的 callfunction node 引用失效

flowcanvas&nodecanvas:

https://pan.baidu.com/s/1htYjNrm

Lua节点:

https://pan.baidu.com/s/1gf5x0ob

使用方法:

下载ToLua项目工程文件(https://github.com/topameng/tolua),

合并入当前的项目工程目录中.在菜单栏中生成ToLua unityEngine的绑定方法文件.

,下载导入lua节点文件,在节点栏中找到并生成lua节点

在节点面板中可自定义参数,写入lua语句:


点击showLuaExample有介绍lua语言的语法知识的说明.

Dotween&插件节点:

http://pan.baidu.com/s/1hs6E4te

graph和nested graph 图表和嵌套资源的本地保存和引用问题:

针对几种情况说明

1:非prefab实例物体的graph和嵌套资源保存:

这种情况比较简单,使用Save To Asset 把绑定的资源(flowscriptcontroller的绑定资源和Nested的绑定资源)一起保存到本地, 所有的嵌套资源都是主资源的子物体。

如果嵌套资源不是绑定生成,而是使用asset资源。那么情况会稍微复杂一些:

如图Sphere球体 的嵌套Behaviour Tree 使用的是 Cube的Nested BT资源,

SaveToAsset后,会自动把所有外部引用的嵌套资源复制到了 Sphere球体的主资源下面,但是球体的嵌套BehaviourTree的引用仍然指向Cube的Nested BT资源。  此时系统会log提示你要调整引用的资源名称。

由于资源间互相引用在资源数量多的时候会比较复杂,因此只好手动调整。   

   避免这种情况发生,一个主graph内的嵌套资源,尽量使用绑定生成,而避免引用其他物体生成嵌套资源,否则比较混乱。   
   如果要加载其他嵌套的graph资源,可以使用菜单栏 File下的import json和export json,把其他嵌套的graph以Json的方式加载导入.
 
2  Prefab 的模式的资源保存方式:
  普通物体在变成prefab物体,或在Inspector栏按下Apply按钮后,会把它和子物体所有的嵌套资源都保存在prefab的资源物体下(注意,如果有引用其他嵌套资源的话是不会把它复制过来的).  
 
 
选prefab实例或选择prefab本体的导出的 Asset和嵌套资源时,只要没有引用其他外部嵌套Asset, 那么Save to Asset 保存后引用关系都会正常.   否则得重新手动对资源的引用进行调整.
新的功能 11.2更新:
 
支持Asset模式,所有嵌套资源都保存在主asset下,同时支持把绑定的资源和其嵌套资源保存到一个Asset资源下. 如图所示, Cube绑定的资源 在使用菜单栏的Save To Asset功能后,全部保存到一个flowscript资源下. (新)


增加菜单栏的清除无用嵌套资源的按钮.

转 flowcanvas的更多相关文章

  1. zz A list of open source C++ libraries

    A list of open source C++ libraries < cpp‎ | links http://en.cppreference.com/w/cpp/links/libs Th ...

随机推荐

  1. python3中报错AttributeError: module 'sys' has no attribute 'setdefaultencoding'

    reload(sys) sys.setdefaultencoding("utf-8") f = open('.\\24.novel.txt','rb') str = f.read( ...

  2. 转CB大佬的几个有用的MySQL知识

    1.find_in_set函数 find_in_set(str,strlist); str是一个字符串 strlist是字符串列表--一个有多个子链被“,”分开的字符串 有多种情况: a.str为nu ...

  3. git从已有分支拉新分支开发

    开发过程中经常用到从master分支copy一个开发分支,下面我们就用命令行完成这个操作: 1. 切换到被copy的分支(master),并且从远端拉取最新版本 $git checkout maste ...

  4. 使用jsonp请求本地json文件

    使用jsonp解决请求本地文件跨域问题 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...

  5. Memcache&Redis

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.减少数据库读取次数来提高网站速度 先在一台机器安装memcache 然后使用Python 安装pip3 i ...

  6. vue:不同环境配置不同打包命令

    修改prod.env.js 'use strict'const target = process.env.npm_lifecycle_event;if (target == 'build') { // ...

  7. docker基本知识

  8. python基础之 编码进阶,文件操作和深浅copy

    1.编码的进阶 字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码.即先将其他编码的字符串解码(decode)成unicode,再从unic ...

  9. npm -i 与npm install -s与-d的区别

    npm i module_name -S = > npm install module_name --save 写入到 dependencies 对象 npm i module_name -D ...

  10. 《CSS世界》读书笔记(四)--宽度分离

    <!-- <CSS世界>张鑫旭著 --> CSS流体布局下的宽度分离原则 所谓“宽度分离原则”,就是CSS中的width属性不与影响宽度的padding/border(有时候包 ...