为什么即使订阅后事件仍然为空?

Why does event remain null even after subscribing to it?

我有 classes Room 和 Iceball。 Iceball 和 IceShard 继承自 class Magic。 当我向房间添加新魔法时,房间订阅事件 CreateNewMagic 魔法,但退出方法后事件仍然为空。

碰撞后的冰球应该在事件的帮助下在房间里制造冰碎片,但是因为事件是空房间不能产生冰碎片

Class 房间

{
    public readonly List<Magi> MagicInRoom;
    public void SpawnMagic(Magic magic)
        {
            MagicInRoom.Add(magic);
            magic.CreateNewMagic += SpawnMagic;
        }
}

Class 魔法、IceBall 和 IceShard

public abstract class Magic
{
    public delegate void MagicHandler(Magic magic);
    public event MagicHandler CreateNewMagic;

    public virtual void OnCollisionEnter()
        {
            if (...)
                {
                ...
                }
        }
}

public class IceBall : Magic
{
    public delegate void MagicHandler(Magic magic);
    public event MagicHandler CreateNewMagic;

    public override void OnCollisionEnter()
        {
            if (...)
            {
                var iceShards = CreateIceShards();
                foreach (var iceShard in iceShards) 
                    if (CreateNewMagic != null) //ALWAYS IS NULL
                        CreateNewMagic(iceShard);
            }
        }
}

public class IceShard : Magic
{
 ...
}

事件应该是抽象的

public abstract class Magic
{
    public delegate void MagicHandler(Magic magic);
    public abstract event MagicHandler CreateNewMagic;

    public virtual void OnCollisionEnter()
        {
            if (...)
                {
                ...
                }
        }
}

public class IceBall : Magic
{
    public override event MagicHandler CreateNewMagic;

    public override void OnCollisionEnter()
        {
            if (...)
            {
                var iceShards = CreateIceShards();
                foreach (var iceShard in iceShards) 
                    if (CreateNewMagic != null) //ALWAYS IS NULL
                        CreateNewMagic(iceShard);
            }
        }
}

public class IceShard : Magic
{
    public override event MagicHandler CreateNewMagic;
}