现在我正在为角色制作技能,我想增加冷却时间,但我不知道如何设定时间,但我想我知道它应该有哪些变量:
private long currentTime; <-- this is the actual cooldown
private long cooldownTime; <--- this is the time it must pass before its ready
private boolean onCooldown; <---- game uses this to check if its on cooldown
private long elapsed = System.nanoTime(); <-- this takes the exact time when a skill is used and is setOnCooldown.
所以这是基本变量,但我根本不知道如何设置它们,我在游戏中得到了一个update()方法,一个cast()方法。请senpais停止!为任何愿意停止n.n
的人提供巧克力饼干答案 0 :(得分:0)
Instant.now()
.plus(
Duration.ofHours( 1 ).plusMinutes( 35 )
)
不太确定你的问题,但你似乎想跟踪“冷静下来”的时间跨度,并且显然是在那段时间过去后进行测试。
Java 8及更高版本中的java.time类包括Duration
和Period
类,用于跟踪从时间轴上未附加的时间跨度。
Duration duration = Duration.ofHours( 1 ).plusMinutes( 35 );
获取UTC中的当前时刻,其分辨率最高为nanoseconds。在Java 8中,当前时刻被捕获到milliseconds。在Java 9中,Clock
的新实现捕获了Instant
类的完整纳秒分辨率的当前时刻。
Instant now = Instant.now();
要确定冷却时间到期的时刻,请将Duration
应用于Instant
以生成另一个Instant
。
Instant coolDownExpires = now.plus( duration );
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和&amp; SimpleDateFormat
现在位于Joda-Time的maintenance mode项目建议迁移到java.time类。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
从哪里获取java.time类?
ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如Interval
,YearWeek
,YearQuarter
和more。