You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中SpawnInterval切换失效求助:SpawnRandomBall执行2次后未切换间隔

问题解决:SpawnRandomBall执行2次后切换生成间隔

问题根源

你的代码逻辑写在Start()里,但Start()仅在脚本初始化时执行一次。一旦通过InvokeRepeating启动了重复调用,后续check变量的增长不会自动修改已启动的重复调用间隔,所以切换逻辑完全没机会触发。

修改后的完整代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SpawnManagerX : MonoBehaviour
{
    public GameObject[] ballPrefabs;

    private float spawnLimitXLeft = 14.5f;
    private float spawnLimitXRight = 24;
    private float spawnPosY = 10;

    private float startDelay = 1.0f;
    private float spawnInterval = 4.0f;
    private float spawnInterval2 = 2.0f;
    public int check = 0; // 显式初始化,避免默认值歧义

    // Start is called before the first frame update
    void Start()
    {
        // 初始直接启动第一次生成循环,使用初始间隔
        InvokeRepeating("SpawnRandomBall", startDelay, spawnInterval);
    }

    // Spawn random ball at random x position at top of play area
    void SpawnRandomBall ()
    {
        // Generate random ball index and random spawn position
        Vector3 spawnPos = new Vector3(-21, spawnPosY, Random.Range(spawnLimitXLeft, spawnLimitXRight));
        int ballIndex = Random.Range(0, ballPrefabs.Length); // 用数组长度代替硬编码3,更灵活

        // instantiate ball at random spawn location
        Instantiate(ballPrefabs[ballIndex], spawnPos, ballPrefabs[ballIndex].transform.rotation);
        
        check += 1;

        // 执行2次后切换间隔(check等于2时,已经完成2次生成)
        if (check == 2)
        {
            // 取消当前的重复调用
            CancelInvoke("SpawnRandomBall");
            // 启动新的重复调用,间隔改为spawnInterval2,保证第二次生成后按时长触发第三次
            InvokeRepeating("SpawnRandomBall", spawnInterval2, spawnInterval2);
        }
    }
}

关键改动说明

  1. 移除Start()中的冗余判断:初始状态check必然为0,直接启动初始间隔的重复调用即可。
  2. 在SpawnRandomBall中加入切换逻辑:每次生成后自增check,当check等于2(即完成2次生成)时,终止当前循环并启动新的间隔循环。
  3. 优化随机索引逻辑:用ballPrefabs.Length代替硬编码的3,数组增减元素时无需修改此处代码。

内容的提问来源于stack exchange,提问作者Burak Batuhan Gündüz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 19:15:31