void GetRelationShipStructList(List <RelationShipStruct> _already, GameObject _obj, int _level) { if (_obj == null) { return; } RelationShipStruct data = new RelationShipStruct(); data.objName = _obj.name; data.instanceID = _obj.GetInstanceID(); if (_obj.transform.parent != null) { data.parentName = _obj.transform.parent.gameObject.name; data.parentInstanceID = _obj.transform.parent.gameObject.GetInstanceID(); } data.level = _level; Renderer rd = _obj.GetComponent <Renderer>(); if (rd == null) { rd = _obj.GetComponent <SkinnedMeshRenderer>(); } if (rd != null) { foreach (var item in rd.sharedMaterials) { if (item != null) { data.matNames.Add(item.name.ToLower()); } } } _already.Add(data); int count = _obj.transform.childCount; _level++; for (int i = 0; i < count; i++) { GetRelationShipStructList(_already, _obj.transform.GetChild(i).gameObject, _level); } }
/// <summary> /// 初始化数据,在经过这一步之前,数据禁止使用 by吴江 /// </summary> public void InitData() { RelationShipStruct myRelationShipStruct = null; foreach (var item in relationList) { if (item.level == 0) { myRelationShipStruct = item; break; } } if (myRelationShipStruct != null) { objName = myRelationShipStruct.objName; matNames = myRelationShipStruct.matNames; instanceID = myRelationShipStruct.instanceID; parentInstanceID = myRelationShipStruct.parentInstanceID; relationList.Remove(myRelationShipStruct); childRelationList = InitSubData(relationList, 1, this); } }