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

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组件的其他引用
    右键场景中的scoreCount Text组件,选择「Find References in Scene」,检查所有引用该组件的脚本,确认是否有其他逻辑在修改该Text的内容(比如误写的减分逻辑、其他系统的信息提示等)。

  • 调整僵尸销毁时机
    尝试延迟销毁僵尸对象,避免帧内碰撞状态异常导致的回调问题:

    // 替换原Destroy代码
    Destroy(other.gameObject, 0.01f);
    
  • 检查是否有跨场景/全局变量冲突
    若你的游戏使用了全局变量或单例管理分数,确认是否存在其他场景的脚本在切换时意外重置或修改了分数数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 21:10:16