public override void OnSpawned()
    {
        base.OnSpawned();

        // basically set defualt block flag
        this._BlockEditorUnitFlag = BlockEditorUnit.DefaultFlag;
    }
    /// <summary>
    /// Release(Destroy) BlockEditorUnit
    /// Disable This Object
    /// Clean ElementOfBlockUnitList
    /// Return back to
    /// </summary>
    public override void Release()
    {
        this.SaveUnitAnchoredPosition();
        // never touch element of targetBlock. Block is seperate from BlockEditorUnit
        // Removing BlockEditorUnit, Element Of BlockUnit shouldn't effect to Block instance
        this.ParentBlockEditorWindow = null;
        this.targetBlock             = null;

        ClearDefinitionOfBlockEditorUnit();

        this._BlockEditorUnitFlag = BlockEditorUnitFlag.None;

        base.Release();
    }