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

Unity无尽跑酷游戏拾取道具加1000分后分数异常消失问题

跑酷游戏道具加分后分数复原问题解决

问题根源

你的GameManager代码里,Update方法每次都会将currentScore重新赋值为Time.timeSinceLevelLoad * 10f——这意味着哪怕你在scoreBonus分支里给分数加了1000,紧接着的scoreText.SetText(currentScore.ToString("0"))又会把UI显示回重置后的基础分数,所以加分只是短暂闪现,立刻被覆盖。

修复方案

把分数拆分为基础时间分数和累加奖励分数两部分,避免每次Update重置总分数。修改后的代码如下:

GameManager 代码调整

private float currentScore = 0;
private int totalScoreBonuses = 0; // 存储所有累加的奖励分数

void Update(){
    if(!isGameEnded){
        // 计算基于游戏时长的基础分数
        float baseTimeScore = Time.timeSinceLevelLoad * 10f;
        // 总分 = 基础分 + 累计奖励分
        currentScore = baseTimeScore + totalScoreBonuses;
        
        scoreText.SetText(currentScore.ToString("0"));
    }
}

// 公开方法:添加奖励分数
public void AddScoreBonus(int bonusAmount){
    totalScoreBonuses += bonusAmount;
}

道具碰撞脚本调整

不再通过scoreBonus变量触发加分,直接调用上面的AddScoreBonus方法:

void OnCollisionEnter(Collision collisionInfo){
    if(collisionInfo.collider.tag == "Player"){
        FindObjectOfType<PlayerCollision>().ActivateInvicibility(invisibilityDuration);
        FindObjectOfType<GameManager>().AddScoreBonus(1000);
        Destroy(gameObject);
    }
}

逻辑说明

  • 基础分数依然随游戏时长增长,但总分数会加上所有拾取道具获得的奖励分,奖励分不会被每次Update重置。
  • 用专门的方法处理加分,比通过布尔变量触发更直观,也更容易扩展(比如后续不同道具加不同分数)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 03:23:12