您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
70 行
2.0 KiB
70 行
2.0 KiB
using NaughtyAttributes;
|
|
using UnityEngine;
|
|
|
|
namespace GameplayIngredients.Actions
|
|
{
|
|
[AddComponentMenu(ComponentMenu.timerPath + "Timer Action")]
|
|
[HelpURL(Help.URL + "timers")]
|
|
[Callable("Time", "Misc/ic-timer.png")]
|
|
public class TimerAction : ActionBase
|
|
{
|
|
public enum Action
|
|
{
|
|
Start,
|
|
SetTime,
|
|
Interrupt
|
|
}
|
|
|
|
[NonNullCheck]
|
|
public Timer timer;
|
|
public Action action = Action.Start;
|
|
|
|
[ShowIf("isSetTime")]
|
|
public uint Hours = 0;
|
|
[ShowIf("isSetTime"), Range(0,59)]
|
|
public uint Minutes = 1;
|
|
[ShowIf("isSetTime"), Range(0,59)]
|
|
public uint Seconds = 30;
|
|
[ShowIf("isSetTime"), Range(0, 999)]
|
|
public uint Milliseconds = 0;
|
|
[ShowIf("isSetTime")]
|
|
public bool Restart = false;
|
|
|
|
|
|
public override void Execute(GameObject instigator = null)
|
|
{
|
|
if(timer == null)
|
|
{
|
|
Debug.LogWarning($"{this.gameObject.name}:{this.name} : Null Timer");
|
|
}
|
|
else
|
|
{
|
|
switch (action)
|
|
{
|
|
default:
|
|
case Action.Start:
|
|
timer.Restart(instigator);
|
|
break;
|
|
case Action.SetTime:
|
|
if (timer.isRunning)
|
|
timer.Interrupt(instigator);
|
|
|
|
timer.Hours = Hours;
|
|
timer.Minutes = Minutes;
|
|
timer.Seconds = Seconds;
|
|
timer.Milliseconds = Milliseconds;
|
|
|
|
if (Restart)
|
|
timer.Restart(instigator);
|
|
break;
|
|
case Action.Interrupt:
|
|
timer.Interrupt(instigator);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
bool isSetTime() { return action == Action.SetTime; }
|
|
}
|
|
}
|
|
|