Я делаю курс по удеми. В уроке объясняется, как запустить функцию, которая останавливает движение мира, когда игрок сталкивается с опасностью. Я скопировал его точно так, как показано в классе.
Это сценарий «PlayerController», у которого есть триггер для вызова функции, останавливающей движение мира.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public GameManager theGM;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
public void OnTriggerEnter(Collider other) {
if (other.tag == "Hazards") {
Debug.Log("Hit Hazard");
theGM.HitHazard();
}
}
}
А это " GameManager », который содержит функцию, останавливающую движение мира.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameManager : MonoBehaviour
{
public bool canMove;
static public bool _canMove;
public float worldSpeed;
static public float _worldSpeed;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
_canMove = canMove;
_worldSpeed = worldSpeed;
}
public void HitHazard() {
_canMove = false;
canMove = false;
}
}
Когда игрок сталкивается с опасностью, он запускает функцию« OnTriggerEnter », она показывает на консоли, что игрок попал в опасность, но когда он пытается вызвать функцию «HitHazard», появляется следующая ошибка: «NullReferenceException: ссылка на объект не установлена на экземпляр объекта».
Уже пытался переписать оба кода и искать в inte rnet , но все равно не смог решить.