/// <summary>
        /// Initializes a pool of objects
        /// </summary>
        /// <param name="text">damage type</param>
        private void Initialize(TextDamageType text)
        {
            m_dTextTypes.Add(text.keyType, new List <UITextDamage>( ));
            List <UITextDamage> container = m_dTextTypes[text.keyType];

            for (int i = 0; i < text.poolCount; i++)
            {
                container.Add(AllocateOneInstance(text));
            }

            // If original prefab is in the scene, disable
            if (text.prefab.gameObject.scene == UnityEngine.SceneManagement.SceneManager.GetActiveScene( ))
            {
                text.prefab.gameObject.SetActive(false);
            }
        }
        /// <summary>
        /// Instantiates one text object of the desired type
        /// </summary>
        /// <param name="text">damage type</param>
        /// <returns></returns>
        private UITextDamage AllocateOneInstance(TextDamageType text)
        {
            if (text == null)
            {
                return(null);
            }

            GameObject g = Instantiate(text.prefab.gameObject) as GameObject;

            g.transform.SetParent(transform);
            g.transform.localPosition = Vector3.zero;
            g.transform.localRotation = Quaternion.identity;

            UITextDamage td = g.GetComponent <UITextDamage>( );

            td.Canvas        = this.canvas;
            td.Cam           = theCamera;
            td.followsTarget = followsTarget;
            g.SetActive(false);

            return(td);
        }