Refactoring

Updated: 2018-08-29

Bolt can automatically call methods, fields and properties from any custom script in your project. For example, you can create a node from a custom Player class with a TakeDamage method:

using UnityEngine;

public class Player : MonoBehaviour
{
    public void TakeDamage(int damage)
    {
        // ...
    }
}

In a flow graph, it would look like:

If you change your script and rename or remove the TakeDamage method or the Player class. For example:

using UnityEngine;

public class Player : MonoBehaviour
{
    public void InflictDamage(int damage)
    {
        // ...
    }
}

The node will turn red in the graph window and Bolt will log a warning to the console.

Failed to define Bolt.InvokeMember:
System.MissingMemberException: No matching member found: 'Player.TakeDamage'

Renaming Members

In order to fix it, you can reopen the script file and map the new name to the previous name with the [RenamedFrom] attribute.

It takes a single string parameter: the previous name of the member.

using UnityEngine;
using Ludiq;

public class Player : MonoBehaviour
{
    [RenamedFrom("TakeDamage")]
    public void InflictDamage(int damage)
    {
        // ...
    }
}

It is recommended to leave the attribute in your source even after a successful recompile. This is because Bolt cannot guarantee Unity will reserialize all your graphs with the corrected name. Bolt's [RenamedFrom] attribute works much like Unity's own [FormerlySerializedAs] attribute in that regard.

Renaming Types

You can also rename types (including classes, structs and enums) using the [RenamedFrom] attribute.

For example, if you renamed your Player class to Character:

using UnityEngine;
using Ludiq;

[RenamedFrom("Player")]
public class Character : MonoBehaviour
{
    [RenamedFrom("TakeDamage")]
    public void InflictDamage(int damage)
    {
        // ...
    }
}

The old name must include the namespace. In the previous example, it isn't required because we are in the global namespace.

Was this article helpful?
This article was helpful for 0 person.
Yes, helpful
No, not for me