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

Unity进入Play模式后DontDestroyOnLoad报错且角色重力移动功能失效

问题1:DontDestroyOnLoad相关报错

该报错属于编辑器操作触发的非逻辑错误,和你的游戏代码无关:

  • [Debug Updater]是Unity渲染管线内置的调试对象,开启开发调试模式后会自动生成并挂载到内置的DontDestroyOnLoad场景中,不是你编写的代码生成的,不需要额外处理
  • 报错触发原因是你在进入Play模式后双击了Hierarchy面板中的[Debug Updater]对象,编辑器尝试将内置的DontDestroyOnLoad场景设为活跃场景触发了引擎限制,只要不主动双击这个对象就不会触发该报错,完全不影响游戏运行逻辑。

问题2:玩家无法下落/移动的问题

你编写的HeroCharacterController存在两处核心逻辑遗漏和错误:

  1. 重力判断逻辑写反:当前代码的判断条件是「未落地且y轴速度向下时直接清空地心速度」,直接导致玩家永远不会下落,应该改为「落地时清空地心速度」
  2. 没有调用速度应用方法:你只计算了速度变量velocity,但没有调用CharacterController的Move()方法把速度应用到玩家对象上,计算出来的速度完全没有生效。

修正后的代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class HeroCharacterController : MonoBehaviour
{
    [SerializeField] LayerMask groundLayers;
    [SerializeField] float moveSpeed = 8f; // 可根据需求自行调整移动速度

    private float gravity = -50f;
    private CharacterController characterController;
    private Vector3 velocity;
    private bool isGrounded;
    
    void Start()
    {
        characterController = GetComponent<CharacterController>();
    }

    void Update()
    {
        // 地面检测逻辑
        isGrounded = Physics.CheckSphere(transform.position, 0.1f, groundLayers, QueryTriggerInteraction.Ignore);

        // 落地时重置y轴速度,避免重力持续累计
        if(isGrounded && velocity.y < 0)
        {
            velocity.y = -2f; // 保留微小负速度避免地面检测出现误判
        }
        
        // 水平移动逻辑(2D跑酷仅保留x轴输入即可)
        float horizontalInput = Input.GetAxis("Horizontal");
        characterController.Move(new Vector3(horizontalInput * moveSpeed * Time.deltaTime, 0, 0));

        // 应用重力效果
        velocity.y += gravity * Time.deltaTime;
        characterController.Move(velocity * Time.deltaTime);
    }
}

额外检查点:确认玩家对象上已经挂载CharacterController组件,且Inspector面板中groundLayers参数已经选中地面对应的层级,否则地面检测逻辑会失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:15:00