Unity从盒子碰撞器的标签加载场景

问题描述 投票:0回答:1

我想根据游戏对象的标签使用 2D 盒子碰撞器(如关卡加载器)加载不同的统一场景。我有 4 个“门”(带有对撞机的游戏对象),顶部为顶部,底部为底部,左侧为左侧,右侧为右侧,因此我想加载名为底部的场景,作为底门。

这是我目前无法使用的代码

using UnityEngine;
using UnityEngine.SceneManagement;

public class GameManager : MonoBehaviour
{
    [SerializeField] private string topScene;
    [SerializeField] private string bottomScene;
    [SerializeField] private string leftScene;
    [SerializeField] private string rightScene;

    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.gameObject.CompareTag("Player"))
        {
            if (collision.CompareTag("top"))
            {
                LoadScene(topScene);
            }
            else if (collision.CompareTag("bottom"))
            {
                LoadScene(bottomScene);
            }
            else if (collision.CompareTag("left"))
            {
                LoadScene(leftScene);
            }
            else if (collision.CompareTag("right"))
            {
                LoadScene(rightScene);
            }
        }
    }

    private void LoadScene(string sceneName)
    {
        SceneManager.LoadScene(sceneName);
    }
}

c# unity-game-engine 2d
1个回答
0
投票

游戏对象仅包含一个标签。您可以检查 collision.gameObject.CompareTag("Player") 如果它包含,那么您可以通过名称来识别它,而不必再次使用 collision.CompareTag("top")。 因此,请在所有条件下使用 collision.gameObject.name ==“top”

© www.soinside.com 2019 - 2024. All rights reserved.