-
Notifications
You must be signed in to change notification settings - Fork 120
Build Actions
Robin North edited this page Jan 4, 2022
·
5 revisions
BuildActions allow you to expand the functionality of SuperUnityBuild by adding new methods that can run before/after all builds or the individual builds of each separate configuration. If you need some examples, check out the unity-build-actions repository.
While each BuildAction will have its own set of options related to whatever purpose it serves, there are a few options that are common to most of them.
- Action Type - This option is used to select whether a BuildAction should run once before/after all builds in a batch ("Single Run") or before/after each individual build in a batch ("Per Platform").
- Filter - The filter is used to limit the build configurations where a BuildAction should execute. For example, if you have a BuildAction that zips up your builds, but you only want it to run if it's a release build for Humble Bundle. You might do something like this:
To create a new BuildAction:
- Create a class that inherits from
BuildAction
. You must place this class in an 'Editor' folder or include it in an assembly that supports the 'Editor' platform for it to run. - Override
Execute
and/orPerBuildExecute
with your new functionality. As the names and method signatures imply, theExecute
method is intended to run before/after all builds andPerBuildExecute
will run before/after each individual build. - Implement one or more of the following interfaces:
IPreBuildAction
,IPreBuildPerPlatformAction
,IPostBuildAction
,IPostBuildPerPlatformAction
. There's nothing to actually implement with any of them. SuperUnityBuild just uses it to identify where your BuildAction is allowed to be used. If you don't implement at least one of these, you won't see your BuildAction available for selection in SuperUnityBuild. - If you need to customize the inspector appearance, override
DrawProperties
. Be aware when doing this that if you callbase.DrawProperties
, it will be unaware of which properties you've already displayed and this may cause properties to appear twice. In this case, it's recommended to either draw all of the property fields yourself and not callbase.DrawProperties
or apply the [HideInInspector] attribute to any properties that you show yourself as this will cause the base class to not automatically draw fields for them.
When implementing your new functionality, BuildProject
has several static helper methods that you may find useful:
-
ResolvePath
- Resolves the standard set of path tokens ($RELEASE_TYPE, $PLATFORM, etc.) in a given string. -
SanitizeCodeString
- Sanitizes a string for use in code. For example, the BuildConstants code generator uses this to convert ReleaseType, Platform, Architecture, and Distribution names into a form that is safe for use as a pre-processor define or variable name. -
SanitizeFolderName
- Sanitizes a string for valid use as a folder name. -
SanitizeFileName
- Sanitizes a string for valid use as a file name.