Методы, вызываемые через событие выдают 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)
new framePos()вы не можете создавать объекты типаMonoBehaviourиспользуя конструктор, используйтеInstantiate. Хотя в данном случае наверное надо написать такframePos framePos = GetComponent<framePos>();– aepot Nov 02 '23 at 15:51