// Use this for initialization
    void Start()
    {
        _sys = TmSystem.instance;
        _sys.mw.setHitLayerMask(1 << LayerMask.NameToLayer("layerTouch"));

        _partsList = new List <MyParts>();
        XmlDocument doc  = new XmlDocument();
        TextAsset   data = Instantiate(Resources.Load(_xmlPath, typeof(TextAsset))) as TextAsset;

        doc.LoadXml(data.text);
        XmlNodeList nodeList = doc.SelectNodes("book/page");

        for (int ii = 0; ii < nodeList.Count; ++ii)
        {
            MyParts parts = createPartsFromNode(nodeList[ii], null);
            _partsList.Add(parts);
        }
        createPlayers();
    }
    private MyParts createPartsFromNode(XmlNode _node, MyParts _parent, GameObject _gameObject = null)
    {
        MyParts parts = new MyParts();
        XmlAttributeCollection attr = _node.Attributes;

        if (attr["id"] != null)
        {
            parts.id = attr["id"].Value;
        }
        if (attr["name"] != null)
        {
            parts.name = attr["name"].Value;
        }
        if (attr["src"] != null)
        {
            parts.src = attr["src"].Value;
        }
        if (attr["comment"] != null)
        {
            parts.comment = attr["comment"].Value;
        }
        if (attr["link"] != null)
        {
            parts.link = attr["link"].Value;
        }
        parts.text = _node.InnerText;
        if (_gameObject == null)
        {
            GameObject[] gos = GameObject.FindGameObjectsWithTag("tagButton");
            foreach (GameObject go in gos)
            {
                if (go.name == parts.name)
                {
                    _gameObject = go;
                    _gameObject.SendMessage("SM_SetPartsInfo", parts);
                    break;
                }
            }
        }
        if (_gameObject == null)
        {
            _gameObject = GameObject.Instantiate(selButtonPartsPrefab) as GameObject;
            _gameObject.SendMessage("SM_SetPartsInfo", parts);
        }
        parts.partsObj = _gameObject;
        if (parts.name != "")
        {
            _gameObject.name = parts.name;
        }
        if (_parent != null)
        {
            parts.parent = _parent;
            parts.partsObj.transform.position = parts.parent.partsObj.transform.position + Vector3.forward * 0.1f;
            parts.partsObj.transform.rotation = parts.parent.partsObj.transform.rotation;
            parts.partsObj.transform.parent   = parts.parent.partsObj.transform;
        }
//		Debug.Log(_node.ChildNodes.Count+":"+parts.id);
        if (_node.ChildNodes.Count > 0)
        {
            parts.childList = new List <MyParts>();
            for (int ii = 0; ii < _node.ChildNodes.Count; ++ii)
            {
                parts.childList.Add(createPartsFromNode(_node.ChildNodes[ii], parts));
            }
        }
        return(parts);
    }