Skip to content

节点时间

NodeTime 是一个游戏时间管理系统,主要负责:

  • 维护游戏的时间更新循环
  • 控制组件和系统的更新顺序
  • 管理时间缩放和时间扭曲效果

开始使用

1 基本操作

typescript
// 检查时间系统是否在运行
const isRunning = NodeTime.isRunning();

// 启动时间系统
NodeTime.start();

// 停止时间系统
NodeTime.stop();

2 时间缩放

时间缩放可以控制游戏时间流速:

typescript
// 正常速度
NodeTime.setTimeScale(1);

// 慢动作效果
NodeTime.setTimeScale(0.5);

// 快进效果
NodeTime.setTimeScale(2);

// 获取当前时间缩放
const currentScale = NodeTime.getTimeScale();

延时任务系统

1 创建延时任务

typescript
// 创建一个3秒后执行的任务
const taskId = NodeTime.setTimeout(() => {
  console.log("3秒后执行");
}, 3000);

// 取消任务
NodeTime.clearTimeout(taskId);

高级特性

2. 时间扭曲效果

typescript
// 参数1: 时间扭曲强度
// 参数2: 持续时间 (毫秒)
NodeTime.applyTimeWarp(2, 1000); // 在1秒内时间流速翻倍

实战示例

1 制作一个简单的倒计时系统

typescript
class CountdownSystem {
  private remainingTime: number;

  constructor(duration: number) {
    this.remainingTime = duration;
  }

  update(deltaTime: number) {
    this.remainingTime -= deltaTime;

    if (this.remainingTime <= 0) {
      console.log("倒计时结束!");
      return true;
    }

    console.log(`剩余时间: ${Math.ceil(this.remainingTime / 1000)}秒`);
    return false;
  }
}

// 使用示例
const countdown = new CountdownSystem(5000); // 5秒倒计时

2 制作慢动作效果

typescript
function createSlowMotionEffect(duration: number) {
  // 进入慢动作
  NodeTime.setTimeScale(0.2);

  // 设置定时器恢复正常速度
  NodeTime.setTimeout(() => {
    NodeTime.setTimeScale(1);
  }, duration);
}

// 使用示例
createSlowMotionEffect(2000); // 2秒的慢动作效果

注意事项

  1. 刷新是影响全局节点的更新频率,因此需要谨慎使用。
  2. 单次更新的最大时间间隔被限制在 1000ms (1 秒)
  3. 在使用时间扭曲效果时,建议使用适度的强度值(1.0-3.0)

7. 进阶应用

1 组合使用时间效果

typescript
function createTimeEffect() {
  // 先使用时间扭曲
  NodeTime.applyTimeWarp(2, 1000);

  // 然后设置延迟任务实现连续效果
  NodeTime.setTimeout(() => {
    NodeTime.setTimeScale(0.5);

    NodeTime.setTimeout(() => {
      NodeTime.setTimeScale(1);
    }, 2000);
  }, 1000);
}