Unity中Doodle Jump复刻:仅首个平台触发加分的问题排查
解决Unity Doodle Jump平台仅首次加分的问题
嘿,我帮你排查下这个问题!你现在遇到的情况核心原因是每个平台脚本都维护了独立的currentScore变量,没有全局统一管理分数状态,而且缺少碰撞对象的校验和平台触发状态的标记,导致后续平台无法正确触发加分逻辑。下面是具体的解决方案:
问题分析
- 你当前的
PlatformScript中,每个平台都有自己的currentScore和displayScore,踩第一个平台时修改的是这个平台的分数,后续平台的分数还是初始值0,就算加分也不会同步到全局UI上; - 没有限制碰撞对象,可能误触发非玩家的碰撞;
- 没有标记平台是否已加分,可能出现重复加分(不过你的情况是后续无反应,主要还是分数管理的问题)。
解决方案:全局分数管理器+平台触发逻辑优化
第一步:创建全局GameManager管理分数
创建一个单例模式的GameManager,统一处理分数计算和UI显示,确保所有平台都共享同一个分数状态:
using UnityEngine; using UnityEngine.UI; public class GameManager : MonoBehaviour { // 单例实例,方便其他脚本直接调用 public static GameManager Instance; public int currentScore = 0; public Text displayScore; // 拖入你的分数UI文本 void Awake() { // 确保场景中只有一个GameManager实例 if (Instance == null) Instance = this; else Destroy(gameObject); } // 对外提供的加分方法 public void AddScore(int amount) { currentScore += amount; UpdateScoreUI(); } // 更新分数UI显示 private void UpdateScoreUI() { if (displayScore != null) displayScore.text = $"Score: {currentScore}"; } }
第二步:修改PlatformScript的触发逻辑
让平台只负责检测玩家碰撞,然后通知GameManager加分,同时标记平台已触发,避免重复加分:
using UnityEngine; public class PlatformScript : MonoBehaviour { public float jumpForce = 10f; private bool hasTriggeredScore = false; // 标记该平台是否已加分 void OnCollisionEnter2D(Collision2D collision) { // 只响应玩家对象的碰撞(记得给你的玩家对象设置"Player"标签) if (collision.gameObject.CompareTag("Player") && !hasTriggeredScore) { // 给玩家施加跳跃力(重置y轴速度避免叠加) Rigidbody2D playerRb = collision.gameObject.GetComponent<Rigidbody2D>(); if (playerRb != null) { playerRb.velocity = new Vector2(playerRb.velocity.x, 0); playerRb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse); } // 通知GameManager加分 GameManager.Instance.AddScore(10); // 标记该平台已加分,防止重复触发 hasTriggeredScore = true; } } }
第三步:场景设置
- 在场景中创建一个空对象,命名为
GameManager,把上面的GameManager脚本挂载上去; - 在Inspector面板中,将你的分数UI文本拖到
GameManager的displayScore字段; - 给你的玩家对象设置
Player标签(在Inspector的Tag下拉框中选择或创建Player标签); - 移除所有平台脚本中的
currentScore和displayScore字段(现在不需要了),确保所有平台都挂载修改后的PlatformScript。
这样修改后,所有平台都会共享同一个全局分数,每次踩未触发过的平台都会正确累加10分,UI也会同步更新啦!
内容的提问来源于stack exchange,提问作者Rachel Fitz
相关产品推荐
相关产品推荐

