0

Методы, вызываемые через событие выдают NullReferenceException. Причем не в классе в котором было вызвано событие, а в классе где был описан метод

public class s: MonoBehaviour   
{   
    public delegate void SpawnPlace();   
    public event SpawnPlace spwnPlc;   
    private void Start()   
    {   
        framePos framePos = new framePos();   
        spwnPlc += framePos.TransFrame;   
    }   
    private void Update()   
    {   
        if (schet.money == 10)   
        {   
           if (spwnPlc != null) spwnPlc();
           //вызываю с проверкой на null   
        }
    }
}

класс где описан метод:

public class framePos : MonoBehaviour
{
public void TransFrame()
{   
    transform.position += cam.transform.forward * 5;
    //NullReferenceException
}    

}

ошибка: NullReferenceException framePos.TransFrame () (at Assets/scripts/framePos.cs:21) puller.LateUpdate () (at Assets/scripts/puller.cs:35)

  • Пожалуйста укажите полный текст ошибки – Швеев Алексей Nov 02 '23 at 15:47
  • 1
    new framePos() вы не можете создавать объекты типа MonoBehaviour используя конструктор, используйте Instantiate. Хотя в данном случае наверное надо написать так framePos framePos = GetComponent<framePos>(); – aepot Nov 02 '23 at 15:51

0 Answers0