Originally posted on the S1T2 Blog (A Not-So-Brief Intro to K2Nodes in Unreal Engine | S1T2) this tutorial offers a broad introduction to the concepts and components around K2Nodes, as well as how to make your own from scratch.
This tutorial won’t take you step by step through the process of making these Nodes (though the full code will be provided at the end). Instead, it will attempt to dissect the more important aspects of the K2Nodes and shed some light on their overall structure and conventions.
A K2Node is a very fancy Blueprint Node that can be used to wrap more advanced and dynamic functionality than your average UFUNCTION. For example, having the inputs and outputs of a Node change depending on other inputs and outputs. One way to think of it is a Blueprint Node that has two or more functions inside of it; one that takes the inputs, passes it around through N functions, then another function that returns the output, like a subgraph in Blueprints.
https://dev.epicgames.com/community/learning/tutorials/381o/unreal-engine-a-not-so-brief-intro-to-k2nodes