forked from BilalY/Rasagar
64 lines
3.2 KiB
Markdown
64 lines
3.2 KiB
Markdown
|
# Blocks
|
||
|
|
||
|
Blocks are Nodes that define the behavior of a [Context](Contexts.md). You can create and reorder Blocks within a Context and, when Unity plays a visual effect, Blocks execute from top to bottom.
|
||
|
|
||
|
![](Images/Block-Anatomy.png)
|
||
|
|
||
|
You can use Blocks for many purposes, from simple value storage (for example, a random Color) to high-level complex operations such as Noise Turbulence, Forces, or Collisions.
|
||
|
|
||
|
## Adding Blocks
|
||
|
|
||
|
To add a Block to a Context, either:
|
||
|
|
||
|
* Right click the Context and select **Create Block** from the context menu.
|
||
|
* With the cursor above a Context, press the spacebar.
|
||
|
|
||
|
**Note**: Unity places the Block that you create at the closest position to the cursor. Use this behavior to place Blocks in the correct position.
|
||
|
|
||
|
## Manipulating Blocks
|
||
|
|
||
|
Blocks are essentially Nodes that have a different workflow logic. Blocks are always stacked within a container, called a [Context](Contexts.md) and their workflow logic connects vertically without visible links.
|
||
|
|
||
|
* To move a Block, click the Block's header and drag it to another compatible Context.
|
||
|
|
||
|
* To reorder a Block, click the Block's header and drag it to a different position in the same Context.
|
||
|
|
||
|
- You can perform various actions on Blocks, such as cutting, copying, pasting, and duplicating. To do this:
|
||
|
|
||
|
- Right-click on the Block and select the command from the context menu.
|
||
|
|
||
|
- Select the Block and use the following keyboard shortcuts:
|
||
|
|
||
|
- **On Windows:**
|
||
|
- **Copy:** Ctrl+C.
|
||
|
- **Cut:** Ctrl+X.
|
||
|
- **Paste:** Ctrl+V.
|
||
|
- **Duplicate:** Ctrl+D.
|
||
|
|
||
|
- **On macOS:**
|
||
|
- **Copy:** Cmd+C.
|
||
|
- **Cut:** Cmd+X.
|
||
|
- **Paste:** Cmd+V.
|
||
|
- **Duplicate:** Cmd+D.
|
||
|
|
||
|
* To disable a Block, disable the checkbox to the left of the Block's header. This requires you to recompile the graph.
|
||
|
|
||
|
## Configuring Blocks
|
||
|
|
||
|
To change the way that the Block looks and behaves, adjust the Block's [Settings](GraphLogicAndPhilosophy.md#settings) in the Node UI or the Inspector.
|
||
|
|
||
|
For example, if, in the Inspector, you change the Composition Settings of a **Set Velocity** Block from **Overwrite** to **Blend**, this changes the title of the Node to **Blend Velocity** and adds a **Blend** property to the Node UI.
|
||
|
|
||
|
## Activation port
|
||
|
|
||
|
In addition to its [property](Properties.md) ports, a Block has a special port called the activation port. It is located on the top left of a Block, next to its name.
|
||
|
|
||
|
The activation port is linked to a boolean property and allows the user to control if a Block is active.
|
||
|
|
||
|
You can use the toggle next to the port to manually activate or deactivate a Block.
|
||
|
|
||
|
You can connect a graph logic to the activation port to accurately control under which conditions a Block is active per invocation. This allows you to implement different behaviors or states per particle within the same system.
|
||
|
|
||
|
Unity is able to determine if a Block is statically inactive. An inactive Block appears greyed out, and Unity removes it during compilation so it has zero runtime cost.
|
||
|
|
||
|
**Note**: Subgraph Blocks don't have activation ports. To emulate an activation port, you can expose a boolean exposed property from the subgraph, and connect the property to the activation ports of the subgraph's internal Blocks.
|