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

Unity 2D加载新场景异常:添加碰撞体后跳转及显示问题求助

Unity 2D场景加载与碰撞体异常问题

问题描述

我是Unity 2D新手开发者,当前遇到场景加载相关问题:

  • 初始场景生成Player后加载salleA场景,通过DontDestroyOnLoad保留Player;
  • 不给salleA墙体添加碰撞体时运行正常,添加Edge Collider2D墙体碰撞体后,游戏直接跳转到salleB场景,且显示异常。

后续测试结果

  • 在salleA中添加相机后运行,提示“no camera rendering”(预期结果,因相机是Player子物体,不会随场景销毁);
  • 移除salleB的黑色方形触发区(Box Collider Trigger)后,运行会跳转到salleC场景;
  • 移除所有场景触发区后,停留在salleA但仅显示黄色画面。

相关信息

初始场景生成Player的代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManager;

public class changeSalle : MonoBehaviour
{
    public Collider2D player;
    // Start is called before the first frame update
    void Start()
    {
        SceneManager.LoadScene("salleA");
        DontDestroyOnLoad(player);
    }

}

碰撞体信息

  • Player:Capsule Collider2D
  • salleA墙体:Edge Collider2D
  • 黑色方形触发区:Box Collider Trigger(salleA右侧触发区跳转salleB,salleB左侧触发区跳转salleA)

场景及异常截图

  • salleA场景:salleA
  • salleB场景:salleB
  • 异常显示画面:strange display
  • 仅显示黄色画面:camera rendering

解决方案建议

  1. 修复Player初始位置与碰撞体重叠问题
    加载salleA后,Player的初始位置可能与触发区或墙体碰撞体重叠,导致场景跳转被意外触发。建议:

    • 调整DontDestroyOnLoad调用时机,先保留Player再加载场景:
      void Start()
      {
          DontDestroyOnLoad(player);
          SceneManager.LoadScene("salleA");
      }
      
    • 通过场景加载完成事件,给Player设置远离触发区的安全初始位置:
      void Start()
      {
          DontDestroyOnLoad(player);
          SceneManager.sceneLoaded += OnSceneLoaded;
          SceneManager.LoadScene("salleA");
      }
      
      void OnSceneLoaded(Scene scene, LoadSceneMode mode)
      {
          if(scene.name == "salleA")
          {
              player.transform.position = new Vector2(0, 0); // 替换为场景内安全坐标
          }
      }
      
  2. 修正触发区的碰撞检测逻辑
    跳转场景的触发脚本可能未正确判断碰撞对象,导致任意碰撞都触发跳转。检查触发区脚本,确保仅Player进入时才执行跳转:

    void OnTriggerEnter2D(Collider2D other)
    {
        if(other.CompareTag("Player")) // 确保Player已添加"Player"标签
        {
            SceneManager.LoadScene("salleB"); // 对应场景跳转逻辑
        }
    }
    

    同时确认Player的Capsule Collider2D未勾选Is Trigger,避免与触发区产生异常交互。

  3. 解决黄色画面(相机渲染问题)
    黄色画面说明相机未正确渲染场景内容,排查方向:

    • 检查Player子物体相机的位置、正交大小,确保视角覆盖salleA场景内容;
    • 确认场景中Sprite Renderer的图层在相机的Culling Mask范围内;
    • 验证Player对象未被意外销毁,相机组件处于启用状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 18:40:56