Gameplay Ingredients是一组用于 Unity 游戏的运行时和编辑器工具:一组脚本的集合,可在制作游戏和原型时简化简单的任务。
您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

69 行
1.9 KiB

using NaughtyAttributes;
using UnityEngine;
namespace GameplayIngredients.Actions
{
[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; }
}
}