第 19 课2026.09.28
两个练习节点共享同一脚本,但需要不同的 tick 频率。
第 19 课:为两个组件实例分别设置调度间隔
- 日期:2026-09-28
- 课程序号:第 19 课
- 知识点:组件实例各自保存 Inspector 属性
用途或适用场景
两个练习节点共享同一脚本,但需要不同的 tick 频率。
核心概念
每个组件实例有自己的 interval、计数与调度回调;@property 的 range/tooltip 只辅助配置,运行时仍用 Math.max 保底。
最小代码或操作示例
ts
// 写在已有 Component 类中;沿用稳定的 tick 回调和 onDisable 清理。
@property({ displayName: '调度间隔(秒)', range: [0.1, 10, 0.1],
tooltip: '每次 tick 的等待秒数;运行时最短 0.1 秒' })
interval = 1
private count = 0
private tick = (): void => { this.count += 1 }
onEnable(): void {
const seconds = Math.max(this.interval, 0.1)
this.schedule(this.tick, seconds)
}
onDisable(): void { this.unschedule(this.tick) }在两个节点各挂一份组件,Inspector 中分别把 interval 设为 0.5 秒和 2 秒。
3~5 分钟练习
运行数秒,分别查看两份组件的计数;再禁用其中一个节点。
参考答案
约同一时长内,较短间隔实例计数更多;禁用一个节点只停止其组件的回调,另一实例继续运行。具体次数受帧调度影响,不作精确秒表断言。
与上一课的联系
沿用第 18 课的 interval、range、tooltip,以及既有的 tick 与撤销逻辑;本课只把同一脚本挂到两个节点并分别配置;下一课可在 Inspector 中对比两实例的运行计数。
时效校验
时效校验:2026-09-28(已核对 Cocos Creator 3.8 LTS Property Attributes、Scheduler 手册及 3.8.9 Component 源码;range、tooltip、schedule/unschedule 未见废弃说明)。