private RectTransform CreateItemUI(IMiniMapItem item)
    {
        var rect  = Instantiate(ItemUIPrefab, container);
        var image = rect.GetComponent <Image>();

        image.sprite = item.Icon;
        image.color  = item.IconColor;
        return(rect);
    }
    private void Remove(IMiniMapItem item)
    {
        var index = items.FindIndex(x => x.item == item);

        if (items[index].relativeUIItem && items[index].relativeUIItem.gameObject)
        {
            Destroy(items[index].relativeUIItem.gameObject);
        }
        items.RemoveAt(index);
    }
 void AddItem(IMiniMapItem item)
 {
     if (items.Exists(x => x.item == item))
     {
         return;
     }
     items.Add(new ItemData()
     {
         item = item, relativeUIItem = CreateItemUI(item)
     });
 }
 public static void Unsubscribe(IMiniMapItem item)
 {
     instance?.Remove(item);
 }
 public static void Subscribe(IMiniMapItem item)
 {
     instance?.AddItem(item);
 }