首页 > 解决方案 > 如何修复在 LevelValue 更改时生成对象的减少时间

问题描述

有一个带有生成对象的脚本,我想在 LevelValue 上升时降低 spawnRate。

所以我做了每10秒增加LevelValue的功能(效果很好)

但是当我尝试将它放在其他脚本中以减少值时,虽然它正在减少它,但不是当 LevelValue 在屏幕上发生变化时。

它在快速减少,前 10 秒,然后是 8、6、4、2、1 等等。

无法理解我做错了什么,好像 LevelValue 的行为与错误的行为相同,但在这里它有效,但在其他地方却没有。

我错过了什么吗?希望这不是什么愚蠢的错误。

我在屏幕上显示 LevelValue 的功能:

public class TimeLevel : MonoBehaviour
{


public static int levelValue = 1;
Text level;

void Start()
{
    level = GetComponent<Text>();
}


void Update()
{
    level.text = "Level:" + levelValue;
}
}

我增加LevelValue的功能:

public class TimerTEST : MonoBehaviour
{

private float timerSpeed = 10f;

private float elapsed;




void Update()
{

    elapsed += Time.deltaTime;

    if (elapsed >= timerSpeed)
    {
        elapsed = 0f;
        TimeLevel.levelValue += 1;
    }


}
}

我的产卵对象功能随着时间的减少:

public class SPawnHorizontal : MonoBehaviour
{

public GameObject enemy1;



public float spawnTime1 = 1.0f;
public float minSpawnTime = 0.3f;
public float decreaseSpawnTime;


private Vector2 screenBounds;


void Start()
{
    screenBounds = Camera.main.ScreenToViewportPoint(new 
Vector3(Screen.width, Screen.height, Camera.main.transform.position.z));
    StartCoroutine(EnemyWave1());


private void spawnEnemy1()
{
    GameObject a1 = Instantiate(enemy1) as GameObject;
    a1.transform.position = new Vector2(screenBounds.x * - 20, 
Random.Range(-20,20 ));

    switch (TimeLevel.levelValue)
    {

        case 2:

            spawnTime1 -= decreaseSpawnTime;
            break;

        case 3:

            spawnTime1 -= decreaseSpawnTime;
            break;

        case 4:

            spawnTime1 -= decreaseSpawnTime;
            break;


    }
   }

标签: c#android-studio

解决方案


推荐阅读