public bool Remove(VCEUIPartDescItem item)
    {
        item.gameObject.SetActive(false);
        item.transform.parent = null;
        GameObject.Destroy(item.gameObject);
        bool retval = m_Items.Remove(item);

        SetDirty();
        return(retval);
    }
    public void Add(VCPart part_prop)
    {
        if (Exists(part_prop))
        {
            return;
        }
        VCEUIPartDescItem pdi = VCEUIPartDescItem.Instantiate(m_Res) as VCEUIPartDescItem;

        pdi.transform.parent     = this.transform;
        pdi.transform.localScale = Vector3.one;
        pdi.gameObject.name      = part_prop.gameObject.name;
        pdi.Set(part_prop);
        m_Items.Add(pdi);
        SetDirty();
    }
    public bool Remove(VCPart part_prop)
    {
        VCEUIPartDescItem remove_tar = null;

        foreach (VCEUIPartDescItem pdi in m_Items)
        {
            if (pdi.m_PartProp == part_prop)
            {
                remove_tar = pdi;
                pdi.gameObject.SetActive(false);
                pdi.transform.parent = null;
                GameObject.Destroy(pdi.gameObject);
            }
        }
        if (remove_tar != null)
        {
            m_Items.Remove(remove_tar);
            SetDirty();
            return(true);
        }
        return(false);
    }