无法刷新用户界面

时间:2021-02-10 06:55:44

标签: c# unity3d

我正在尝试跟踪。

游戏管理器:

bool gameHasEnded = false;
public GameObject completeLevelUI;

public void CompleteLevel(){
    completeLevelUI.SetActive(true);    
}

public void EndGame(){
    if(gameHasEnded == false){
        gameHasEnded = true;
        Invoke("Restart",2f);
    }
}

void Restart(){
    SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}

enter image description here

enter image description here

结束触发器:

public GameManager gameManager;
void OnTriggerEnter(){
        gameManager.CompleteLevel();
}

我在控制台“END”中得到一个输出。早些时候我在 Console.Log("END"); 上使用 CompleteLevel。但是,当我更改该源代码时。较早的源代码在工作,而不是新的。就像 Unity 无法刷新该源代码一样。而且,我确信我已经成功保存了 c# 代码。

玩家碰撞:

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

public class PlayerCollision : MonoBehaviour
{
    
    public PlayerMovement movement;

    void OnCollisionEnter(Collision collisionInfo)
    {
        Debug.Log(collisionInfo.collider.name);
        if (collisionInfo.collider.tag == "obstacle")
        {
            movement.enabled = false;
            FindObjectOfType<GameManager>().EndGame();
        }
    }

}

1 个答案:

答案 0 :(得分:0)

您在 OnTriggerEnter() 中使用了错误的方法。通过不在括号中添加任何内容,程序不知道何时应该激活该方法,从而导致它不执行任何操作,因为它没有被调用。为了解决这个问题,只需将 OnTriggerEnter() 替换为 OnTriggerEnter(Collider other)。这将告诉它何时运行该方法。