-
-
Notifications
You must be signed in to change notification settings - Fork 12
How to Create a new Modifier
James Veugelaers edited this page May 6, 2025
·
4 revisions
A modifier is a step in the build process run after retrieving all sources. Modifiers will change the sources files in a cached directory.
The Build Uploader uses reflection to find all classes inheriting ABuildConfigModifer to display them in the games dropdown.
using System.Collections.Generic;
using System.Threading.Tasks;
using Wireframe;
[BuildModifier("Custom Modifier")]
public class CustomModifier : ABuildConfigModifer
{
public override bool IsSetup(out string reason)
{
// Return false to prevent a build from starting if this is incorrectly setup.
reason = string.Empty;
return true;
}
public override Task<bool> ModifyBuildAtPath(string cachedDirectory, BuildConfig buildConfig, int buildIndex, BuildTaskReport.StepResult stepResult)
{
// Custom logic to modify the build at the specified path
// For example, you could add custom files or modify them here
// Return true if the modification was successful
return Task.FromResult(true);
}
public override Dictionary<string, object> Serialize()
{
// Serialize the custom modifier's state to a dictionary
var data = new Dictionary<string, object>
{
{ "CustomProperty", "CustomValue" } // Example property
};
return data;
}
public override void Deserialize(Dictionary<string, object> data)
{
// Deserialize the custom modifier's state from a dictionary
if (data.TryGetValue("CustomProperty", out var customValue))
{
// Use the deserialized value
// For example, you could set a property or perform some action based on the value
}
}
protected override void OnGUIExpanded(ref bool isDirty)
{
// Custom GUI logic for the modifier
// For example, you could add custom fields or controls here
// Example of a custom field
// EditorGUILayout.TextField("Custom Field", customValue);
// Mark as dirty if any changes are made
if (isDirty)
{
// Perform any necessary actions when the state changes
}
}
}