Я пытаюсь сделать событие, которое возникает, когда что-то происходит.Таким образом, другие классы, которые содержат ссылку на класс, вызвавший событие, получают уведомление.Это то, что я получил до сих пор:
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DropArea : MonoBehaviour {
public event EventHandler ObjectChange;
void Start () {
}
// Update is called once per frame
void Update () {
}
void OnTriggerEnter(Collider other)
{
var correctType = FindParentWithComponent(other.gameObject);
if (correctType != null)
{
var cc = correctType.GetComponent<Object_properties>();
if(cc.VariableTypeSelector == AcceptedVariableType)
{
DetectedObjectChange(null); // here i want to raise the event
}
}
}
protected virtual void DetectedObjectChange(EventArgs e)
{
EventHandler handler = ObjectChange;
if (handler != null)
{
handler(this, e );
}
}
}
это класс, который должен получить уведомление о возбужденном событии:
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class IfStatement : MonoBehaviour {
public DropArea Base, Check, Increment;
void Start()
{
Base.ObjectChange += OnBaseObjectChange; //this line gives me an error so i cant compile.
}
// Update is called once per frame
void Update () {
}
void OnBaseObjectChange(System.Object sender)
{
Debug.Log("event is raised by element");
}
}
это ошибка, которую я получаю:
Нет перегрузки для 'OnBaseObjectChange' соответствует делегату 'EventHandler'
Я никогда раньше не работал с событиями, но я не могу понять, как это исправить.К сожалению, я также не совсем понимаю документы Microsoft о событиях :(
Если требуется дополнительное разъяснение, пожалуйста, дайте мне знать!
Вся помощь действительно оценена!