为什么我的游戏在我点击时会加载另一个场景?统一二维

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

这个游戏是一个弹出锁式的小游戏。每次我单击点预制件时,游戏都会加载另一个场景,但只有当我在点预制件外部单击并且在没有单击的情况下经过点预制件时才应该这样做。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class DestroyPoint : MonoBehaviour
{
    bool triggered = false;

    bool canClick = false;
    Collider2D collidedObject;

    private void Update()
    {
        if (!triggered && Input.GetKeyDown(KeyCode.Space))
        {
            Debug.Log("Game over");
            SceneManager.LoadScene("FishingSpot");
        }
        else if (triggered && collidedObject != null && Input.GetKeyDown(KeyCode.Space))
        {
            canClick = false;
            Debug.Log("Point Destroyed");
            Destroy(collidedObject.gameObject);
            collidedObject = null;
        }
    }

    void OnTriggerEnter2D(Collider2D other)
    {
        Debug.Log("Entered");
        if (other.gameObject.CompareTag("Point"))
        {
            canClick = true; 
            triggered = true;
            collidedObject = other;
        }
    }

    void OnTriggerExit2D(Collider2D other)
    {
        Debug.Log("exited");
        if (canClick = true && other.gameObject.CompareTag("Point"))
        {
            collidedObject = null;
            Debug.Log("Game Over exit");
            SceneManager.LoadScene("FishingSpot");
        }
        if (other.gameObject.CompareTag("Point"))
        {
            canClick = false;
            triggered = false;
            collidedObject = null;
        }
    }
}

我原本希望在单击而不是加载其他场景后销毁 pointPrefab。

c# unity-game-engine 2d game-development
1个回答
1
投票
if (canClick = true && other.gameObject.CompareTag("Point"))
...

我可以观察到的一个大问题是在您使用赋值运算符(=)而不是比较(==)的

if
方法的
OnTriggerExit2D()
条件中。这将始终将
canClick
设置为
true
并且每当您超出标记为
Point
的触发器时,它将加载
FishingSpot
场景。

改为..

if (canClick && other.gameObject.CompareTag("Point"))
© www.soinside.com 2019 - 2024. All rights reserved.