This has been used for an in-game notification icon that blinks when a new notification is available.

A Scene bool variable called “NewNotification” triggers this code to be run. During the code block we need to wait for the fading and unfading to complete before the “OnUpdate” tells the block of code to run again. If it tries to start it again before it’s done the blinking cycle, it makes the blink fail. To support this we have a Graph based bool variable called “Blinker”

If Blinker is true our block of code know that the blink hasn’t finished yet and waits until the bool is False again, meaning that it can initiate another blink.

Note: This code block must be set as a co-routine as we use Wait Timers.

Using bolt for the bulk of a projects can speed up development, however bolt doesn’t integrate with everything you may want to import into your projects like specialized assets from the unity asset store. To access the Bolt variables using c# code you can write small scripts what make use of one of the most powerful features in bolt.

using Bolt;
//**** SET ****
// Application Variables
Variables.Application.Set("DLC1_Owned", true);

// Scene Variables
Variables.ActiveScene.Set("Timer_Running", true);


//**** GET ****
//
(bool)Variables.ActiveScene.Get("Timer_Running");

This code lets the project know that you want to use Bolt references inside this script and then second line of code sets the Application level variable called “DLC!_Owned” to True (As it’s a bool variable)

Refernce: https://ludiq.io/bolt/manual/scripting/variables

Not as relevant when you are using Steam but if you wanted to use a program in a corporate environment that makes use of an SSO or Single Sign On in Windows, this is how you can retrieve that information from within Unity. The first version of BOLT does not support this so it must be done in code. Here is the code that will sent the username of the person currently signed into windows, to the console window when the program starts.

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class testing : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        Debug.Log(Environment.UserName);
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

The important part is the “Environment.UserName” but it requires that you have the “using System;” declared or it won’t work.

UPDATE:

In the Bolt setup wizard if you add “Environment” to the types list you will be able to access Environments from within the Graphs.

You can add a lot of new features to Bolt in this way.
Bolt is easily expanded.

For AssetBundles to be available in BOLT you first have to add the proper option to the “Assembly Options” in the BOLT setup area.

UnityEngine.AssetBundleModule

Loading AssetBundles

Loading Assets from a bundle in Unity to prevent the 5GB limit that the “Resource” folder puts on all project assets loaded during runtime.

Making use of AssetBundles in BOLT for Unity

This was the simple asset loading and unloading BOLT graph I put together to help others who were having issues using AssetBundles in BOLT.

NOTE: There is a loading and unloading delay if your asset packing script in Unity is set to compress the assets. It’s best to leave the uncompressed for quick loading.

Tagging Assets to be Bundled

You must tag all of the assets you want in the AssetBundle using “AssetBundle Tag” located in the Preview window of Unity. You can split the assets into multiple bundles to make them load faster.

Bottom Left “AssetBundle” Tag area. Mark assets with thee tags to have them built into the bundles by the script above.

Asset Bundle Building Script

Here is the script needed to build uncompressed AssetBundles in Unity. Create this C# script and put it in the “Editor” directory under “Assets”.

using UnityEditor;
using System.IO;

public class CreateAssetBundles
{
    [MenuItem("Assets/Build AssetBundles")]
    static void BuildAllAssetBundles()
    {
        string assetBundleDirectory = "Assets/AssetBundles";
        if (!Directory.Exists(assetBundleDirectory))
        {
            Directory.CreateDirectory(assetBundleDirectory);
        }
        BuildPipeline.BuildAssetBundles(assetBundleDirectory, BuildAssetBundleOptions.UncompressedAssetBundle, BuildTarget.StandaloneWindows);
    }
}

Loading from Multiple Bundles

This is an advanced example of loading from multiple AssetBundles. In this example when a “Play” button is pushed it sets the Playing variable to TRUE and loads the sound file based on the sound name that was stored in a UI Text component. It also gets which AssetBundle the asset should be loaded from using another variable that was set earlier that contains the name of the asset bundle (It matches the AssetBundle Tag) It then takes the location of the App on the computer and STRING Concats everything together to load the assetbundle and then the file needed from inside. Sets the Volume and plays the audio clip that was loaded. It ends by unloading the asset. So this Graph loads the asset from the assetbundle and plays it and then unloads the assetbundle.