Unity中击杀僵尸分数莫名随机下降问题求助
问题排查与解决建议
针对你遇到的击杀僵尸后分数随机减少的问题,结合提供的脚本,给出以下几个排查方向:
检查脚本重复挂载
确认挂载CollisionScript的游戏对象上是否存在多个该脚本实例。每个实例会维护独立的killCount变量,若某个实例的killCount数值较低,更新UI时就会覆盖正确的分数。
解决方式:选中挂载脚本的物体,在Inspector面板中删除多余的CollisionScript组件。监控数值与日志排查
修改脚本,给killCount添加序列化标签并增加日志输出,实时追踪数值变化:using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class CollisionScript : MonoBehaviour { [SerializeField] private int killCount; // 可在Inspector面板实时查看 public Text scoreCount; private void OnCollisionEnter2D(Collision2D other) { if (other.gameObject.CompareTag("zombie")) { Destroy(other.gameObject); killCount += 1; Debug.Log($"当前击杀数:{killCount}"); // 输出日志 scoreCount.text = "Kill Count: " + killCount.ToString(); } } }运行游戏时观察Console面板,当分数异常减少时,查看是否有异常的日志输出,或
killCount是否被意外修改。排查UI组件的其他引用
右键场景中的scoreCountText组件,选择「Find References in Scene」,检查所有引用该组件的脚本,确认是否有其他逻辑在修改该Text的内容(比如误写的减分逻辑、其他系统的信息提示等)。调整僵尸销毁时机
尝试延迟销毁僵尸对象,避免帧内碰撞状态异常导致的回调问题:// 替换原Destroy代码 Destroy(other.gameObject, 0.01f);检查是否有跨场景/全局变量冲突
若你的游戏使用了全局变量或单例管理分数,确认是否存在其他场景的脚本在切换时意外重置或修改了分数数值。
内容的提问来源于stack exchange,提问作者user21491858
相关产品推荐
相关产品推荐

