public void CreatPrefab() { #region cloths EditorUtility.DisplayProgressBar(sex.ToString(), "clothes resources are dealing...", 1 / 7f); IEditorCloth cloths = EditorClothFactory.Creat(sex, restype); cloths.CreatPrefab(); #endregion #region race EditorUtility.DisplayProgressBar(sex.ToString(), "create race...", 2 / 7f); TPoseEditor pose = TPoseEditorFactory.Creat(sex, obj, restype); RaceData rd = pose.CreatTPose(); #endregion #region animator EditorUtility.DisplayProgressBar(sex.ToString(), "animations resources are dealing...", 3 / 7f); IEditorAnimation anim = EditorAnimationFactory.Creat(sex, restype); RuntimeAnimatorController controller = anim.Creat(); #endregion #region base EditorUtility.DisplayProgressBar(sex.ToString(), "body parts resources are dealing...", 5 / 7f); List <SlotOverlayItem> sos = new List <SlotOverlayItem>(); SlotOverlayItem eyeItem = new SlotOverlayItem(); BaseClothItemEditor eyes = new EyesEditor(obj, restype); SlotDataAsset eyes_slot = eyes.CreatSlot(); OverlayDataAsset eyes_overlay = eyes.CreatOverlay(); eyeItem.slot = eyes_slot; eyeItem.overlay = eyes_overlay; eyeItem.partIndex = eyes.WearPos; SlotOverlayItem faceItem = new SlotOverlayItem(); BaseClothItemEditor face = new FaceEditor(obj, restype); SlotDataAsset face_slot = face.CreatSlot(); OverlayDataAsset face_overlay = face.CreatOverlay(); faceItem.slot = face_slot; faceItem.overlay = face_overlay; faceItem.partIndex = face.WearPos; sos.Add(eyeItem); sos.Add(faceItem); #endregion #region CharacterPlayer EditorUtility.DisplayProgressBar(sex.ToString(), "create character...", 7 / 7f); Dictionary <string, object> dic = new Dictionary <string, object>(); dic["animatorController"] = controller; dic["race"] = rd; dic["sos"] = sos; string assetpath = string.Format("{0}/{1}.prefab", prefabFold, obj.Name); IPrefabItem prefab = new PrefabItem(assetpath); prefab.CreatPrefab(null, CreatPrefabFinish, dic); #endregion }
public List <SlotOverlayItem> CreatData() { List <SlotOverlayItem> sos = new List <SlotOverlayItem>(); int submeshIndex = 0; bool first = false; string firstSlotPath = null; for (int i = 0; i < sharedMaterials.Count; i++) { SlotOverlayItem item = new SlotOverlayItem(); string materialName = sharedMaterials[i]; string name = baseName + "-" + i; if (!first) { #region slot SlotEditor so = new SlotEditor(slotMesh, name, slotFold, Mat); SlotDataAsset firstSlot = so.Creat(); item.slot = firstSlot; firstSlotPath = string.Format("{0}/{1}_{2}.asset", PathHelper.GetRelativeAssetPath(slotFold), name, UMAUtils.Slot); #endregion first = true; } else { #region slot string target = string.Format("{0}/{1}_{2}.asset", PathHelper.GetRelativeAssetPath(slotFold), name, UMAUtils.Slot); FileUtil.CopyFileOrDirectory(firstSlotPath, target); AssetDatabase.Refresh(); ObjectBase obj = new ObjectBase(target); SlotDataAsset slotSub = obj.Load <SlotDataAsset>(); slotSub.subMeshIndex = i; item.slot = slotSub; #endregion } #region overlay OverlayEditor oe = null; if (materialName.EndsWith(CharacterConst.Common)) { oe = new OverlayEditor(overlayFold, comTexture, name, Mat); } else { oe = new OverlayEditor(overlayFold, diff, name, Mat); } OverlayDataAsset overlay = oe.CreatOverlay(); item.overlay = overlay; #endregion #region index item.partIndex = wearpos * 10 + i; #endregion sos.Add(item); } return(sos); }