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

Unity中如何用协程实现临时2倍乘数后保留后续升级的乘数

临时乘数与永久升级冲突的解决方案

问题根源在于你直接修改了全局的Multiplier值,永久升级的乘数会被临时效果的/2操作错误抵消。正确的做法是把乘数拆分为基础乘数和临时加成两个独立变量,两者的乘积作为最终生效的乘数。

第一步:修改GameManager

在GameManager中拆分乘数变量,对外提供只读的最终乘数:

public class GameManager : MonoBehaviour
{
    // 基础乘数(升级操作修改这个值)
    public static int BaseMultiplier = 1;
    // 临时乘数加成(临时效果修改这个值,默认无加成)
    public static float TempMultiplierBonus = 1f;

    // 对外暴露的最终生效乘数,自动计算基础与临时的乘积
    public static float Multiplier => BaseMultiplier * TempMultiplierBonus;

    // 原有Iron数量、UI更新等逻辑保持不变
    // ...
}

第二步:修改TwoX脚本

临时效果仅修改TempMultiplierBonus,同时添加按钮冷却避免重复触发:

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class TwoX : MonoBehaviour
{
    [SerializeField] private Button _twoXButton;
    // 临时效果持续时长(按需求改为30秒)
    private const float EffectDuration = 30f;
    // 标记是否正在生效临时效果
    private bool isEffectActive = false;

    void Start()
    {
        _twoXButton.onClick.AddListener(ActivateTwoXEffect);
    }

    void ActivateTwoXEffect()
    {
        if (isEffectActive) return;
        StartCoroutine(TwoXEffectCoroutine());
    }

    IEnumerator TwoXEffectCoroutine()
    {
        isEffectActive = true;
        _twoXButton.interactable = false; // 禁用按钮防止重复点击
        GameManager.TempMultiplierBonus = 2f;

        yield return new WaitForSeconds(EffectDuration);

        GameManager.TempMultiplierBonus = 1f;
        isEffectActive = false;
        _twoXButton.interactable = true; // 恢复按钮可用性
    }
}

第三步:调整升级按钮逻辑

所有购买升级的代码,要修改BaseMultiplier而非原来的Multiplier,比如+1升级的示例逻辑:

// 示例:+1升级按钮的点击处理
public void BuyAddOneMultiplier()
{
    if (GameManager.Iron >= 10)
    {
        GameManager.Iron -= 10;
        GameManager.BaseMultiplier += 1;
        // 调用UI更新方法刷新显示
        UpdateMultiplierDisplay();
    }
}

修改后两者完全独立:

  • 临时效果生效时,最终乘数为基础乘数 × 2
  • 期间购买升级,基础乘数增加,最终乘数实时变为新基础乘数 × 2
  • 临时效果结束后,最终乘数自动回到新基础乘数 × 1,完全保留升级效果

内容的提问来源于stack exchange,提问作者awakengaming83

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 06:55:24