我正在尝试跟踪。
游戏管理器:
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);
}
结束触发器:
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();
}
}
}
答案 0 :(得分:0)
您在 OnTriggerEnter() 中使用了错误的方法。通过不在括号中添加任何内容,程序不知道何时应该激活该方法,从而导致它不执行任何操作,因为它没有被调用。为了解决这个问题,只需将 OnTriggerEnter() 替换为 OnTriggerEnter(Collider other)。这将告诉它何时运行该方法。