単純なコマンドとして扱うのであれば、Waitメソッドが、Updateのようなもので、これがtrueになっている場合は、毎回呼ばれます。
フェード中は更新処理をしてtrueを、フェードが終わったらfalseを返すようにしてみてください。
public override bool Wait(AdvEngine engine)
{
return true;
}
using UnityEngine;
using System.Collections;
using UtageExtensions;
namespace Utage
{
public class AdvCommandEffectCustom : AdvCommandEffectBase
, IAdvCommandEffect
{
Color color;
float time;
FadeManager fadeManager;
public AdvCommandEffectCustom(StringGridRow row, AdvSettingDataManager dataManager)
: base(row,dataManager)
{
}
protected override void OnParse(AdvSettingDataManager dataManager)
{
this.color = ParseCellOptional<Color>(AdvColumnName.Arg1, Color.white);
if (IsEmptyCell(AdvColumnName.Arg2))
{
this.targetName = "SpriteCamera";
}
else
{
//第2引数はターゲットの設定
this.targetName = ParseCell<string>(AdvColumnName.Arg2);
}
this.time= ParseCellOptional<float>(AdvColumnName.Arg6,0.2f);
ParseWait(AdvColumnName.WaitType);
}
//エフェクト開始
protected override void OnStart(AdvEngine engine, AdvScenarioThread thread)
{
//外部に作ったフェード管理をコンポーネントを取得
fadeManager = engine.GetComponent<FadeManager>();
//フェードの開始。終了をコールバックで受け取る
fadeManager.StartFade(targetName,color,time,
()=>
{
OnComplete(thread);
});
}
//エフェクトのスキップ処理
public void OnEffectSkip()
{
//スキップ処理
if (fadeManager != null)
{
fadeManager.SkipFade();
}
}
//エフェクトの終了処理
public void OnEffectFinalize()
{
fadeManager = null;
}
}
}