Search Unity

  1. Good news ✨ We have more Unite Now videos available for you to watch on-demand! Come check them out and ask our experts any questions!
    Dismiss Notice

FlowCanvas - Visual Scripting Similar to Unreal Blueprints

Discussion in 'Assets and Asset Store' started by nuverian, Apr 14, 2015.

  1. dadude123

    dadude123

    Joined:
    Feb 26, 2014
    Posts:
    790
    Thank you for the answer that makes many things much clearer. Sounds good so far.

    I thought of a few more things:

    - Is it possible to handle events (including computing a return value) using FC or NC? If not is there any way that could be added by us ourselves? We have a large existing system that heavily relies on events which take multiple parameters and return values (whole classes)

    - Can a flow canvas be used as a condition-action in a node canvas? Meaning that node canvas would call into a flowcanvas to determine if it should take a branch in node canvas.
    Or can FCs only be their own nodes (like nested behaviour trees and FSMs)?
     
  2. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,052

    Hello again,
    You are welcome.

    ● In FlowCanvas, you can automatically (or manually) subscribe to any instance or static Unity or C# event of void return type and any number of arguments through reflection.
    Some examples shown here:
    EventsReflection.png

    Is that what your question was referring to? Let me know if not.

    ● Right now it's not possible to use flowscripts in place of an action/condition rather only as sub nodes, but it is a feature I plan to implement in the near future :)

    Thanks!
     
  3. dadude123

    dadude123

    Joined:
    Feb 26, 2014
    Posts:
    790
    Yes, sort of. I guess we can change our API so we get an object to modify, instead of returning a new one. So not a big problem.

    I'm not sure about some things regarding the blackboard still.

    In NodeCanvas, can we also get "deeper" values?
    For example I want to have a condition like this: "if(this.Team.Leader.Level > 20)"
    The only way I can see this working would be adding a variable to the blackboard for all the types, and then add a lot of actions to assign the next variable in the chain. But then again I don't see how you could even access a variable from the blackboard in another assignment.

    Would I have to make custom c# nodes to access each individual field/property for all our classes?
    I know there's the reflection node for GetProperty, but that's pretty slow and allocates when dealing with values that get boxed. Is there a better way than putting 5 action-statements of type GetProperty below each other?

    Or is the intended way to solve problems like this to use flow-canvas, as soon as it is possible to use a FC in a NC-condition?
     
  4. toto007

    toto007

    Joined:
    Jul 18, 2014
    Posts:
    22
    Hi guys, I need to create a visual graphic editor that you can edit a Runtime. This graph consists of custom nodes. It is very important that the visual editor graph can work at run time even if it has limited functionality. I found this solution: Https://github.com/seneral/Node_Editor_Framework
    but I want a more solid solution. I want to know if Flowcanvas can run in runtime mode and if it allows the user to edit a runtime the graph.
     
  5. dadude123

    dadude123

    Joined:
    Feb 26, 2014
    Posts:
    790
    Yes, you can edit node canvas and flowcanvas scripts at runtime (still in the unity editor, I don't think there's any tool where you have an actual in-game editor).
    I'm just not sure how to best save them because they get reset once you exit play mode again. But you can copy-paste your graphs. Maybe there's some setting to keep the changes...
     
  6. toto007

    toto007

    Joined:
    Jul 18, 2014
    Posts:
    22
    I would need a can create an application with the built-in graphics editor. Then Unity Editor will not be available. To what I understand then Flowcanvas is not suitable for my purpose?
     
  7. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,052
    Hello again,

    At least right now, in NodeCanvas there is no "direct" way of getting "deep" properties like for example assign a 'transform' type of variable "x" component. I've already looked at some solutions, but all they all are only possible at the cost of performance due to reflection that will be required to achieve, whereas right now, reading/writing a Blackboard variable is super fast.

    For your information, the most prominent solution I've been tinkering about, is to allow "expressions" in task/node BBParameters. As such, it would be possible for example to set an expression for a boolean BBParameter (eg "Check Bool" condition), to be like "$myVariable.Team.Leader.Level > 20" like in your example, or even things like "$myFloat * Time.deltaTime".
    Naturally, another downside of allowing such expressions due to being strings, would be that references to variables, would be prone to break if the variable name change, whereas right now, changing a Blackboard variable name retains it's references in all BBParameters without a problem, but I think it is a good option to have nonetheless.

    Even when the ability to use flowScripts as Actions/Conditions comes, I don't think it will be suited to be used for that purpose, since I believe that even it will be possible, it would also really be an overkill to use a whole flowScript only for the purpose of getting a "deeper" value.

    As such, considering you want zero allocations for your example case, I would recommend to either:
    1) Create custom tasks for the properties you want to get/set, or...
    2) Create a "gateway" MonoBehaviour with a collection of properties you want to get/set and then bind these properties to Blackboard variables. For example:
    Code (CSharp):
    1. public class BoundProperties : MonoBehaviour {
    2.  
    3.     public int level{
    4.         get {return GetComponent<Entity>().Team.Leader.Level;}
    5.         set {GetComponent<Entity>().Team.Leader.Level = value;}
    6.     }
    7. }
    You should of course cache the component instead :)

    Then after you bind the property to a variable, you would directly be interfacing with that property whenever using the variable and would cause no allocation as well.
    BoundProperty.png

    Let me know what you think on the above.
    Thanks.


    Hello,

    FlowCanvas graph editor is built upon and using the UnityEditor namespace, which as you know is not available in runtime build. You could create a custom GUI for displaying and editing graphs, but that would of course be a very big amount of work required that I wouldn't suggest undertaking.
    This feature has surprisingly been requested a few more times in the past, so I might at some point in the future create a runtime editor GUI, but right now it is not possible.

    Thanks.
     
  8. Sprak

    Sprak

    Joined:
    May 20, 2008
    Posts:
    26
    I'm having some trouble getting FlowCanvas to work on iOS when using custom classes. I've added the class to the list of preferred types, and clicked the button to generate the AOTClasses.cs and link.xml files. There's an XML error being generated, but I think I fix it by removing the comma added on the second row, and adding the closing </assembly> at the end.
    Here's the flow script i'm testing with:

    fc_test.png

    The SendEventWhenFound class is derived from MonoBehaviour and has a static event called OnTracking.
    Whenever I run it I get this error:

    Code (CSharp):
    1. NullReferenceException: A null value was found where an object instance was required.
    2.   at System.Reflection.EventInfo.CreateAddEventDelegate (System.Reflection.MethodInfo method) [0x00000] in <filename unknown>:0
    3.   at System.Reflection.EventInfo.AddEventHandler (System.Object target, System.Delegate handler) [0x00000] in <filename unknown>:0
    4.   at FlowCanvas.Nodes.CSharpAutoCallbackEvent.OnGraphStarted () [0x00000] in <filename unknown>:0
    5.   at NodeCanvas.Framework.Graph.StartGraph (UnityEngine.Component agent, IBlackboard blackboard, Boolean autoUpdate, System.Action`1 callback) [0x00000] in <filename unknown>:0
    6.   at NodeCanvas.Framework.GraphOwner.StartBehaviour () [0x00000] in <filename unknown>:0
    7.   at System.IComparable`1[T].CompareTo (.T other) [0x00000] in <filename unknown>:0
    8.   at System.IComparable`1[T].CompareTo (.T other) [0x00000] in <filename unknown>:0
    9.   at System.IComparable`1[T].CompareTo (.T other) [0x00000] in <filename unknown>:0
    10.   at System.IComparable`1[T].CompareTo (.T other) [0x00000] in <filename unknown>:0
    11. )
    FlowCanvas is just a blessing for certain workflows, and I would love to have this up and running on iOS.
     
  9. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,052
    Hello,
    I just wanted to let you know that I have replied to your email about this.
    Thank you!
     
  10. dadude123

    dadude123

    Joined:
    Feb 26, 2014
    Posts:
    790
    I see.
    Your suggestion makes sense, and it should work reasonably well for our scenario. I'll implement wrappers like that for now.

    I get that "string expressions" break when code gets refactored, but I think that happens in any case. Even the system as it is right now breaks when variables get renamed, go missing, etc...
    So I think it would not be too bad to get some system for "deeper" values. Breaking happens anyway when the user of the system is not careful.

    A potential solution should definitely be UI based though (not a text field where the user enters expressions), because for non-programmers they might get names wrong more often or forget what properties/fields/methods are even available.

    Let me know if you have any plans or ideas that go into that direction.
     
  11. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,052
    Hello again,

    Renaming variable names right now should not break variable links at all (please let me know if that is the case for you), but for the string expressions feature I was talking about, yeah it will :)
    To leverage the full power of string expression (when they make it into FlowCanvas), I think that a UI for writing them, should best be avoided, so that the expression can have any form (hard to accomplish with a UI unless we are talking about another complete visual scripting UI panel :)). I still need to investigate into this possibility better though, but in any case string expression should be utilized only in certain cases where an intermediate to advanced user should deem appropriate and better than connecting multiple nodes.
    Everything is still under consideration of course :)

    Thanks a lot for your input.
     
  12. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,052
    In case anyone has missed it, the new version of FlowCanvas v.2.8, has recently gone live on the Asset Store.
    The changes of the new version include the following:
    • New: Major editor code refactoring and stepping stones for future development.
    • New: Ability for multiple Attribute Drawers to work together (Compound Drawers).
    • New: Much better search matching algorithm within Node Browser.
    • Mod: FlowController prefabs no longer create a FlowScript sub-asset.
    • Fix: Graph Editor is no longer auto focused when changing Graph Owner selection.
    • Fix: Panning nodes when zoom out.
    • Fix: Several other micro bugs.
    Cheers!
     
  13. SONB

    SONB

    Joined:
    Jul 24, 2009
    Posts:
    89
    Hi. I'm having difficulties accessing float multiplication node, like float * float. All I can find are nodes with floats multiplied with other types like vector, quaternion, color... But there is no float * float. No matter if I pull from a float variable or right click in the canvas. Am I missing something?
     
  14. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,052
    Hello and super sorry for the late reply (I was badly ill for the last week or so).
    Also, please use the official forums if possible for overal faster support.

    Float * Float (as well as other operators), can be found under "Functions/Implemented/Operators/Float/".
    Because of the mathematical symbol I chose to use for multiply (my bad), it is not easy to have it show up in the browser with the search field. I will need to create an alias name for those symbols (eg "Multiply" so that they can easily be found from the search field).

    Thank you!
     
  15. Jianxian

    Jianxian

    Joined:
    Oct 28, 2015
    Posts:
    2
    Flow Editor Crashed In 2017.1.0f3

    Please advise!
     
  16. BeautifulRiver

    BeautifulRiver

    Joined:
    Sep 19, 2016
    Posts:
    47
    Hi the web page said

    --------------------------------------------
    ANNIVERSARY SALE 40% OFF!
    --------------------------------------------

    But the price is $42 in my cart, same as the original price. How do I take advantage of the sale?
     
  17. BiosElement

    BiosElement

    Joined:
    Apr 29, 2013
    Posts:
    10
    That is the sale price. Regular is $70 IIRC.
     
    NeatWolf and nuverian like this.
  18. BeautifulRiver

    BeautifulRiver

    Joined:
    Sep 19, 2016
    Posts:
    47
    nuverian likes this.
  19. NeatWolf

    NeatWolf

    Joined:
    Sep 27, 2013
    Posts:
    887
    Hi there!

    I guess this has been asked before, but couldn't find this info on the first post nor on the product description. (if it's really not there I'd suggest adding it)

    Is flowcanvas completely cross-platform (mobile in particular)?

    For my purposes I'd only need it to be fully functional on Android/iOS.

    Are there specific steps required to prepare an Android/iOS build to make sure all Flowcanvas code works with full features? :)

    Sorry about the possibly noobish question, but I haven't delved in the implementation details yet, I'm considering to purchase it to power some hybrid action platformer with quests/puzzles/adventure elements, such as chained scripted sequences and timed checks on global game progression vars :)

    Is the progress or state of the graph entirely serializable (not a big deal, since I'm going to use typical quest/story advancement vars, but would be interesting to know)? Is graph state snapshotting/saving/loading possible?

    Thanks :)
     
  20. jayderyu

    jayderyu

    Joined:
    Dec 28, 2015
    Posts:
    16
    @nuverian
    Can graphs be updated or added to asset bundles. That way logic updates, or small new graphs can be added without updating new APK/IPA.
     
  21. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,052
    Hello!

    I am sorry for the late reply, but I mostly check the official forums rather than here.
    FlowCanvas should work in all platforms including mobile, with a small extra step required as explained here required for AOT platforms specifically like iOS is.
    There still though might be some "special cases" where some things may not be properly supported in mobile with that step, but I've rarely been reported of such.

    Regarding your question about serialization of the state of the graph, the graph itself can not store it's state, since a flowScript does not have the notion of a "state", but rather only input events that trigger a "Flow" and consequence nodes that respond to that "Flow". On the other hand though, FlowCanvas Variables can be serialized/stored and restored with ease. With that in mind, you could store some variables and in the "OnEnable" event of the graph (that would run each time the graph is loaded), based on the re-stored variables, you can "direct" the flow with some variable checks to re-create the game state that was previously active. This is not though an out-of-the-box solution, but rather just a possible solution :).

    Thus, the TLDR answer, would be that graphs can not be snapshot-ed, no, but variables can :)
    Let me know if you have any more questions.

    Thank you!

    Just to keep the thread updated for everyone, I have replied to your email about this regard.
    Yes, flowscripts can be part of an asset bundle, considering that all types and references the flowscript references, are part of the original distribution.
    Cheers!
     
    NeatWolf likes this.
  22. NeatWolf

    NeatWolf

    Joined:
    Sep 27, 2013
    Posts:
    887
    Thanks for the extensive reply Nuverian!
    I should definitely delve deeper in the docs, thanks for sharing that link. Yup, what I asked probably doesn't come out of the box, but definitely isn't going to be a problem to implement :)

    Keep up with the good work! :)
     
    nuverian likes this.
  23. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,052
    You are very welcome and thanks a lot! :)
     
  24. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,052
    Check out this great quick introduction video tutorial to FlowCanvas, made by Jayanam.

     
  25. hairrokit

    hairrokit

    Joined:
    Sep 5, 2018
    Posts:
    2
    Hello is this possible to access a variable from another Script made with FlowCanvas ?
     
  26. mf_andreich

    mf_andreich

    Joined:
    Jul 7, 2017
    Posts:
    33
    Yes you can use "Get Other Of Type" node for example.
     
    nuverian likes this.
  27. hairrokit

    hairrokit

    Joined:
    Sep 5, 2018
    Posts:
    2
    Thank you very much !
     
  28. Fenixake

    Fenixake

    Joined:
    Jan 25, 2014
    Posts:
    118
    Is this tool good to remake C# scripts with it for learning purpos?
     
  29. mf_andreich

    mf_andreich

    Joined:
    Jul 7, 2017
    Posts:
    33
    What do you mean?
     
    nuverian likes this.
  30. Fenixake

    Fenixake

    Joined:
    Jan 25, 2014
    Posts:
    118
    What I mean is that I got some ccrips and I want to convert(remaking) them to(in) FlowCanvas as a working visual representation of that script.
     
  31. mf_andreich

    mf_andreich

    Joined:
    Jul 7, 2017
    Posts:
    33
    I dont yhink that its can be done with some tools, IMHO its possible only with hand work.
     
    nuverian likes this.
  32. Hexoca

    Hexoca

    Joined:
    Sep 6, 2018
    Posts:
    1
    I think they were just asking if this would be a good tool to convert some c# scripts into, so they can better "visualize" the script as its running for the purpose of having a better idea on how the script works and its process.
     
    Fenixake likes this.
  33. EvilGremlin

    EvilGremlin

    Joined:
    Aug 12, 2016
    Posts:
    213
    Any decent tutorials for this asset yet?
     
  34. mf_andreich

    mf_andreich

    Joined:
    Jul 7, 2017
    Posts:
    33
    nuverian and EvilGremlin like this.
  35. EvilGremlin

    EvilGremlin

    Joined:
    Aug 12, 2016
    Posts:
    213
  36. ClayChi

    ClayChi

    Joined:
    Mar 30, 2018
    Posts:
    8
    Hello, I'm getting this error when I import the package. Unity version 2018.2.0f2

    I tried deleting and re-importing but result is same.

    Edit: I created a new project and it imported fine. So I'm guessing my existing code somewhat interfering with this.
     
    Last edited: Sep 10, 2018
  37. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,052
    @mf_andreich Thanks a lot for your answers in the forum! :)

    Hey,
    It looks like that there is a class named "Button" in your project, which is though not enclosed within any namespace and thus implicitly hides the UnityEngine.UI.Button class.
    If this "Button" class is part of your own code, then I would strongly advice as a good coding practice to please put it within a namespace. If though, that "Button" class is part of another asset/library, then probably the solution would be to kindly pursue the developer to put his/her code into a namespace :)

    Thank you.
     
    mf_andreich likes this.
  38. ThermodynamicsMakesMeHot

    ThermodynamicsMakesMeHot

    Joined:
    Feb 14, 2015
    Posts:
    222
    Just dropping in as I do enjoy the concept of this asset but need to explain my position.

    To elaborate:

    My experience with this asset was:

    1. You really need to understand computer programming in general to use this. Not any language specifically, just understanding how computer code works, a lot of languages do the same thing just use different syntax.

    2. When you really do understand coding it seems tedious and extremely difficult to navigate and find what your looking for and complete overkill for the simple things it seems to do easily.

    Overall experience was everything I accomplished took 10x longer than it would have if I just coded it myself.

    Maybe this could change with video's or tutorials on how to use this. Honestly fumbled through it but accomplished a bunch of things but in the end I could not make it work by itself. I had to always have my own scripts running things with this on top.

    It seems to work the same way the video shows it, over top of already existing code.

    I can't help but think this is way to much to do such trivial and simple things. Why would a decent coder opt to use this? How does this speed things up? The code it writes will have so much extra stuff and run slower?

    Maybe just using it wrong? Right? This has to be more then what it appeared to be.....

    When using this I tried to recreate a simple game that took mere hours to write in pure code. After many hours and over 2 days I called it and moved on. I just could not seem to make a game with just this. It found it takes way to long to find things and then I could never find what I was looking for.

    Example:
    Code (csharp):
    1.  Camera.main.backgroundColor = Color.HSVToRGB(0.5f, 0.5f, 0.5f);
    Could not even do something a simple as that among other things that were frustrating such as could not get any sort of Start or Update or Awake function that worked. No way to work with scriptableObjects which I can't seem to code without these days.

    Maybe this is all still new? I dunno, I like it, it looks cool but really needs a good how to making something with only this and nothing but this.

    As a coder I love being lazy but I hate slow, if this can get some decent usage tutorials or something maybe it will be faster for prototyping...that was the hope anyways.
     
  39. sinzer0

    sinzer0

    Joined:
    Aug 29, 2013
    Posts:
    168
    @ThermodynamicsMakesMeHot

    I'm a coder that uses Flowcanvas, but I use it with Nodecanvas. I understand why the author sales node and flow canvas separate, but imo Flowcanvas is worthless without Nodecanvas if you already know how to code.

    I use flowcanvas to model my states in Nodecanvas statemachines and leafs in behavior trees. This allows me to easily swap in and out different behaviors / actions while prototyping and to have a nice clean way to keep everything organized in statemachines or behavior trees.

    This allows me to focus on the higher level game stuff and break down to code for the more low level tedious parts by making new nodes or tasks.

    If the asset author sold them together and they had a little tighter integration then I think more people would come to understand how they can be useful over the traditional make component soup.
     
  40. ThermodynamicsMakesMeHot

    ThermodynamicsMakesMeHot

    Joined:
    Feb 14, 2015
    Posts:
    222
    You know that's what I was thinking. I totally get having them separate but from my own experience and research comes down to the same conclusion, that you would really need both to be productive.

    It was still fun to play around with. This should be in an asset flippers toolbox, straight up, since you can use it to add stuff on to an existing framework quite easily, that is where this becomes a Tool.

    If you wrote that framework then this will not be over quickly. You will not enjoy this. This is not your Tool.
     
  41. Stardog

    Stardog

    Joined:
    Jun 28, 2010
    Posts:
    1,532
    This seems easy. You can search for all of this when you right-click. Every unity function/variable exists via reflection. All the Awake/Start/Update blocks are in Events > Graph.

    Capture.PNG

    It's good for quick things like making an object rotate. I wouldn't want to make a tiny monobehaviour with just transform.Rotate in it.
     
  42. ThermodynamicsMakesMeHot

    ThermodynamicsMakesMeHot

    Joined:
    Feb 14, 2015
    Posts:
    222
    Easy when you know what your doing. That actually helps a lot. Might have to give it another go now.
     
  43. Stardog

    Stardog

    Joined:
    Jun 28, 2010
    Posts:
    1,532
    I think there are some improvements that could help.
    • Save previous search in right-click menu.
    • Put basic events like Start/Update in more obvious place.
    • When searching for "Camera", it should prioritise reflected nodes with Camera in the path name first, then Implemented stuff, then Variables/Flow Controller/Events at the bottom. Currently it shows "Events/Custom/Custom Event (T)/UnityEngine" first and a lot of rarely used event nodes. The path should also be included in search.
    • Alphabetical order of properties.
     
    sinzer0 likes this.
  44. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,052


    Hello there,
    Thank you for dropping by the forums. :)

    "I had to always have my own scripts running things with this on top."

    This sentence right here, is basically the key sentence from your post and where I will put my basis bellow. It is correct, that even though it can potentially be possible, you wouldn't want to create low-level scripts with FlowCanvas (or any visual scripting for that matter). Low-level things ideally belong to code, but FlowCanvas can help you (or other parts of the team), interface with that existing low-level code, with a high-level visual approach of when and what is happening. Pretty much how @sinzer0 stated "This allows me to focus on the higher level game stuff and break down to code for the more low level tedious parts by making new nodes or tasks."

    Think about the Unity API for a moment. The Unity API is great and has a lot of things already there. It is a basically a library with which you interface in your own code all the time. The Unity API though is not made for a specific game of course and thus for each of our games we make, we further build upon that Unity API to further create an API for our specific game, unless we are making a very simple game where the existing Unity API suffice to be our game API as well.

    Just like your own code is interfacing with the Unity API, FlowCanvas is ideally meant to interface with your own code for the purposes of a specific game you are making and thus there is a natural hierarchy order starting from low-level and going up to high-level in every step:
    Nothingness -> Assembly -> .NET -> Unity API -> Your API -> Visual Scripting.

    With this approach and by having FC visual scripting sit on top of your code, you can make gameplay systems and mechanics easy to visually iterate for you as a programmer, but most importantly (as I usually say) more efficient when working with a designer.

    As an example, let suppose that we are making a Point & Click Adventure game, or any similar game where there are interactive items so to say. Instead of having the designer or writer bugging the programmer all the time about what each interaction does as well as when any change they want to make, you can set up a flowScript for each of those interactions and let the designer (or even yourself) define the interaction visually. You would also probably want to give whomever designs those interactions, a specific set of things (high level functions you've made for the game) that they can call, or even completely custom nodes tailored to your specific game. This way, also means that the graph designer does not necessarily needs to know how code generally works if at all.

    Illustrating this, here is a very good usage example of FlowCanvas from the game Graveyard Keeper from Lazy Bear Games. As you can see, the graph is quite clean and they do not try to replicate functionality with dozens of low-level nodes, but rather only design at a higher level. They have even made some custom nodes for that matter.


    Thus, an example of "making something with this and only this", if you are referring to a complete complex game, I don't think it is convenient to do with any visual scripting tool alone, but if you are referring to some simple games, there do exists quite a few examples on both the downloads section as well as the relevant forums section on the website most of which are kindly shared by the community.

    Having said all the above, this is one approach to take and is the one I would at least suggest for coders. Non-coders can of course still use the tool, but when relying on the Unity API alone, then yes of course, having a broad perspective of how code works, how games are made and an overview of the Unity API, is generally required.

    Once again though, visual scripting tools as a concept, mostly exist to provide a middle ground upon which code and design can communicate and collaborate efficiently when it matters to the project. Be that as an individual, or as a team.

    I really hope you find the above information useful! :)

    I find it hard to understand how you were struggling with the 'Camera.main.backgroundColor' by the way :) The documentation I believe is quite thorough into how to Add Nodes, Connect Node or How the Flow Works (among a lot of other things of course). Furthermore, I would once again recommend that you check out the examples as a learning tool. Here is also a quick tip for when searching for a specific node. You can (obviously) type in more than two words, but each word is check for a match against both the node name, as well as it's category in the order of appearance. In other words, if you are searching to the "transform.position" property node, you can simply search for "transform position", but also search as such with partial words, like "trans pos" like-so:


    Once again, I hope the above information was useful to you, but if you have any questions, problems or even ideas, please feel free to drop by the Official FlowCanvas Forums.
    Thanks ;)



    Hey,
    Thanks for the answers in the forums. Please let me address your suggestions:
    • I could add this as an option.
    • Hmm.. I think that the existing "Events/Graph" is quite obvious :) What would your suggestion be though?
    • Further improvement to the browser searching has just been completed. When you type "Camera." (notice the '.' at the end), it will show all camera members first for example. The categorization of the nodes has also been removed when searching.
    DotSearch.gif

    • Regarding alphabetical order, usually developers declare members in an order that kind of makes sense, so that one after the other may have some kind of relation. I do understand your suggestion though, and I could add that as an option as well.

    Thanks :)
     
  45. notno

    notno

    Joined:
    Feb 19, 2018
    Posts:
    4
    Can someone explain how and when to use cooldown effectively? I'm not seeing it in any docs.

    I'm trying to destroy an object whenever the player's collider meets the object's trigger collider, and the collision seems to be happening multiple times before the object gets destroyed. I was wondering if cooldown could help with this.

    [Update: Remembering that I could go look at the examples to figure things out. But maybe it's good to have a description of cooldown for posterity...]
     
  46. Dreamer1986

    Dreamer1986

    Joined:
    Jun 30, 2015
    Posts:
    7
    I'm very new to Unity and your plugin, and as soon as I install it I get the "Assets/ParadoxNotion/FlowCanvas/Module/Nodes/Functions/Implemented/Implemented Nodes/Unity.cs(5,34): error CS0234: The type or namespace name `AI' does not exist in the namespace `UnityEngine'. Are you missing an assembly reference?" error. How do I fix it please?

    I suspect that its related to this: using NavMeshAgent = UnityEngine.AI.NavMeshAgent; I am using Unity Personal Edition v5.3.8p2.
     
  47. ThermodynamicsMakesMeHot

    ThermodynamicsMakesMeHot

    Joined:
    Feb 14, 2015
    Posts:
    222
    If you read the docs about the asset or even the asset store description you will have your answer.
     
  48. ThermodynamicsMakesMeHot

    ThermodynamicsMakesMeHot

    Joined:
    Feb 14, 2015
    Posts:
    222
    This is what I had played around with and tried to replicate using FlowCanvas.


    Here is the Flow I got set up but ended up hitting some roadblocks. I thought I would share it here incase anyone wants to build on it or something. Maybe it can help others who knows.

    I don't know if I will come back to it but here it is anyways.






    Disclaimer: I am in no way affiliated with the publisher of this asset or video or anything to do with it at all besides trying to redo this concept in FlowCanvas. It is a public video that anyone can chime in and try make it.

    About the game:
    Here's the video:

    If you want to buy it: https://www.assetstore.unity3d.com/en/?stay#!/content/124955
     
    Last edited: Sep 28, 2018
  49. Stardog

    Stardog

    Joined:
    Jun 28, 2010
    Posts:
    1,532
    Can this be optional? It's hard to see what anything is part of. Type '+' to see.
     
  50. lemonaid

    lemonaid

    Joined:
    Aug 27, 2016
    Posts:
    5
    Hey, I'm new to FlowCanvas and have a very basic programming knowledge. I have written very small personal games to use in my class (I'm a teacher), and in order to learn flowCanvas I have been re-doing the base Unity tutorials.
    Can someone enlighten me how to achieve the private temporary variables ( parameters) when calling my own methods?
    I know flowcanvas communicate through events, but I have not found by myself how to achieve the following:



    I ended up creating a damage variable in my enemies and been trying to achieve the damage as follows:


    Any help would be appreciated.

    EDIT : half an hour later and checking the plant vs zombie Videos :
     
    Last edited: Sep 25, 2018
unityunity