protected override void OnDestroy()
        {
            base.OnDestroy();

            if (_Render != null)
            {
                _Render.Release(this);
            }
            _Render = null;
            EmojiTools.RemoveUnityMemory(this);
        }
        private void OnDestroy()
        {
#if UNITY_EDITOR
            if (_lostAssets != null)
            {
                for (int i = 0; i < _lostAssets.Count; ++i)
                {
                    string asset = _lostAssets[i];
                    Debug.LogError(string.Format("not prepred atlasAsset named :{0}", asset));
                }
            }
#endif
            if (_render != null)
            {
                _render.Dispose();
            }

            _render = null;
            EmojiTools.RemoveUnityMemory(this);
        }
 public void Draw(IEmojiRender rd)
 {
     _Render = rd;
 }
        void InitRender()
        {
            if (_render == null || _render.renderType != RenderType)
            {
                if (RenderType == EmojiRenderType.RenderGroup)
                {
                    EmojiRenderGroup newRender = new EmojiRenderGroup(this);
                    newRender.Speed = AnimationSpeed;

                    if (_render != null)
                    {
                        List <InlineText> list = _render.GetAllRenders();
                        if (list != null)
                        {
                            for (int i = 0; i < list.Count; ++i)
                            {
                                InlineText text = list[i];
                                if (text != null)
                                {
                                    newRender.TryRendering(text);
                                }
                            }
                        }

                        List <SpriteAsset> atlaslist = _render.GetAllRenderAtlas();
                        if (atlaslist != null)
                        {
                            for (int i = 0; i < atlaslist.Count; ++i)
                            {
                                SpriteAsset atlas = atlaslist[i];
                                if (atlas != null)
                                {
                                    newRender.PrepareAtlas(atlas);
                                }
                            }
                        }
                        _render.Dispose();
                    }

                    _render = newRender;
                }
                else if (RenderType == EmojiRenderType.RenderUnit)
                {
                    UnitRender newRender = new UnitRender(this);
                    newRender.Speed = AnimationSpeed;

                    if (_render != null)
                    {
                        List <InlineText> list = _render.GetAllRenders();
                        if (list != null)
                        {
                            for (int i = 0; i < list.Count; ++i)
                            {
                                InlineText text = list[i];
                                if (text != null)
                                {
                                    newRender.TryRendering(text);
                                }
                            }
                        }

                        List <SpriteAsset> atlaslist = _render.GetAllRenderAtlas();
                        if (atlaslist != null)
                        {
                            for (int i = 0; i < atlaslist.Count; ++i)
                            {
                                SpriteAsset atlas = atlaslist[i];
                                if (atlas != null)
                                {
                                    newRender.PrepareAtlas(atlas);
                                }
                            }
                        }

                        _render.Dispose();
                    }

                    _render = newRender;
                }
                else
                {
                    Debug.LogError("not support yet");
                    this.enabled = false;
                }
            }
        }