GameObject CreateGameObject(Entity e)
    {
        GameObject gameObject = null;
        var res = Resources.Load<GameObject>("Prefabs/FusionSlot");

        try
        {
            gameObject = GameObject.Instantiate(res);
        }
        catch (Exception)
        {
            Debug.Log("Cannot instantiate " + res);
        }

        if (gameObject != null)
        {
            gameObject.name = "FusionSlot " + e.fusionPosition.position;
            gameObject.transform.SetParent(_slotPanel, false);
            gameObject.transform.GetComponent<Image>().sprite = Resources.Load<Sprite>(e.resource.path);
            gameObject.GetComponent<RectTransform>().anchorMin = new Vector2(e.fusionPosition.position * 0.6f, 0.0f);
            gameObject.GetComponent<RectTransform>().anchorMax = new Vector2(0.4f + (e.fusionPosition.position * 0.6f), 1.0f);
            gameObject.GetComponent<RectTransform>().offsetMin = Vector2.zero;
            gameObject.GetComponent<RectTransform>().offsetMax = Vector2.zero;
            gameObject.transform.localScale = (e.fusionPosition.position < 1 ) ? Vector3.one : new Vector3(-1.0f, 1.0f, 1.0f);

            gameObject.GetComponent<Button>().onClick.AddListener(() =>
            {
                e.IsFusable(false);
            });
        }

        return gameObject;
    }