Based on the script of setting material color to children here is a the same but setting all sprites to a color.
When finished it will fire off a finish so you can use the finished event.
// (c) Copyright HutongGames, LLC 2010-2012. All rights reserved.
using UnityEngine;
using System.Collections;
namespace HutongGames.PlayMaker.Actions
{
[ActionCategory("2D Toolkit/Sprite")]
[Tooltip("Set the color of a sprite. \nNOTE: The Game Object must have a tk2dBaseSprite or derived component attached ( tk2dSprite, tk2dAnimatedSprite)")]
public class Tk2dSpriteSetColorToChildren : FsmStateAction
{
[RequiredField]
[Tooltip("The Game Object to work with. NOTE: The Game Object must have a tk2dBaseSprite or derived component attached ( tk2dSprite, tk2dAnimatedSprite).")]
public FsmOwnerDefault gameObject;
[Tooltip("The color")]
[UIHint(UIHint.FsmColor)]
public FsmColor color;
[ActionSection("")]
[Tooltip("Repeat every frame.")]
private Hashtable _originalColors;
private tk2dBaseSprite _sprite;
private void _getSprite()
{
GameObject go = Fsm.GetOwnerDefaultTarget(gameObject);
if (go == null)
{
return;
}
_sprite = go.GetComponent<tk2dBaseSprite>();
}
public override void Reset()
{
gameObject = null;
color = null;
}
public override void OnEnter()
{
_getSprite();
GameObject go = Fsm.GetOwnerDefaultTarget(gameObject);
ApplyColorToHierarchy(go.transform);
}
public override void OnUpdate()
{
GameObject go = Fsm.GetOwnerDefaultTarget(gameObject);
ApplyColorToHierarchy(go.transform);
}
void ApplyColorToHierarchy(Transform parent)
{
DoSetSpriteColor(parent.gameObject);
for (int i = 0; i < parent.childCount; i++)
{
ApplyColorToHierarchy(parent.GetChild(i));
if(i == parent.childCount - 1)
{
Finish();
}
}
}
void DoSetSpriteColor(GameObject go)
{
_sprite = go.GetComponent<tk2dBaseSprite>();
if (_sprite == null)
{
LogWarning("Missing tk2dBaseSprite component");
return;
}
if (_sprite.color != color.Value)
{
_sprite.color = color.Value;
}
}
}
}