protected override void DoReplace(Component srcComp, Type dstType)
        {
            OutLineDxx dxx = srcComp as OutLineDxx;

            if (dxx.enabled)
            {
                var dstComp = srcComp.gameObject.GetComponent(dstType);
                if (dstComp == null)
                {
                    dstComp = srcComp.gameObject.AddComponent(dstType);
                    OnReplace(srcComp, dstComp);
                }
            }
            DestroyImmediate(srcComp, true);
        }
        protected override void OnReplace(Component srcComponent, Component dstComponent)
        {
            base.OnReplace(srcComponent, dstComponent);
            OutLineDxx dxx = srcComponent as OutLineDxx;
            OutlineEx  ex  = dstComponent as OutlineEx;

            if (dxx == null || ex == null)
            {
                return;
            }

            var color = dxx.effectColor;

            color.a         = Mathf.Min(1, color.a * 5);
            ex.OutlineColor = color;

            ex.OutlineWidth = 2;//dxx.effectDistance.magnitude / 1.414f;
            ex.ShadowOffset = new Vector2(0, -5);
        }