RaceData CreatRace(UmaTPose umaTpose)//创建Race文件 { if (umaTpose == null) { return(null); } RaceData rd = new RaceData(); RaceData targetrd = new RaceData(); rd.expressionSet = expressionSet; rd.dnaConverterList = new DnaConverterBehaviour[2]; rd.dnaConverterList[0] = dnaConverterBehaviour; rd.dnaConverterList[1] = RaceMap.Instance.tutorialDan; rd.dnaRanges = new DNARangeAsset[1]; rd.dnaRanges[0] = danRange; rd.TPose = umaTpose; rd.raceName = objBase.Name; string tempPath = string.Format("{0}/{1}_Race.asset", Fold, objBase.Name); IObjectBase race = new ObjectBase(tempPath); race.CreatAsset(rd); return(rd); }
static void ExtractTPose() { var selectedObjects = Selection.objects; if (selectedObjects.Length > 0) { bool extracted = false; foreach (var selectedObject in selectedObjects) { var assetPath = AssetDatabase.GetAssetPath(selectedObject); if (!string.IsNullOrEmpty(assetPath)) { var modelImporter = AssetImporter.GetAtPath(assetPath) as ModelImporter; if (modelImporter != null) { var asset = UmaTPose.CreateInstance <UMA.UmaTPose>(); asset.ReadFromHumanDescription(modelImporter.humanDescription); var name = selectedObject.name; if (name.EndsWith("(Clone)")) { name = name.Substring(0, name.Length - 7); asset.boneInfo[0].name = name; asset.Serialize(); } if (!System.IO.Directory.Exists("Assets/UMA/Assets/TPoses")) { System.IO.Directory.CreateDirectory("Assets/UMA/UMA_Assets/TPoses"); } AssetDatabase.CreateAsset(asset, "Assets/UMA/UMA_Assets/TPoses/" + name + "_TPose.asset"); extracted = true; } } } if (extracted) { AssetDatabase.SaveAssets(); return; } } foreach (var animator in Transform.FindObjectsOfType(typeof(Animator)) as Animator[]) { var asset = UmaTPose.CreateInstance <UmaTPose>(); asset.ReadFromTransform(animator); var name = animator.name; if (name.EndsWith("(Clone)")) { name = name.Substring(0, name.Length - 7); asset.boneInfo[0].name = name; asset.Serialize(); } if (!System.IO.Directory.Exists("Assets/UMA/Assets/TPoses")) { System.IO.Directory.CreateDirectory("Assets/UMA/UMA_Assets/TPoses"); } AssetDatabase.CreateAsset(asset, "Assets/UMA/UMA_Assets/TPoses/" + name + "_TPose.asset"); EditorUtility.SetDirty(asset); AssetDatabase.SaveAssets(); } }
public RaceData CreatTPose()//创建TPose文件 { ModelImporter modelImporter = objBase.importer as ModelImporter; UmaTPose umaTpose = UmaTPose.CreateInstance <UMA.UmaTPose>(); modelImporter.animationType = ModelImporterAnimationType.Human;//修改 animation类型 为 humanoid modelImporter.SaveAndReimport(); umaTpose.ReadFromHumanDescription(modelImporter.humanDescription); string tempPath = string.Format("{0}/{1}_TPose.asset", Fold, objBase.Name); IObjectBase tpose = new ObjectBase(tempPath); tpose.CreatAsset(umaTpose); return(CreatRace(umaTpose)); }
static void ExtractTPose() { foreach (var animator in Transform.FindObjectsOfType(typeof(Animator)) as Animator[]) { var asset = UmaTPose.CreateInstance <UmaTPose>(); asset.ReadFromTransform(animator); var name = animator.name; if (name.EndsWith("(Clone)")) { name = name.Substring(0, name.Length - 7); asset.boneInfo[0].name = name; asset.Serialize(); } if (!System.IO.Directory.Exists("Assets/UMA/Assets/TPoses")) { System.IO.Directory.CreateDirectory("Assets/UMA/UMA_Assets/TPoses"); } AssetDatabase.CreateAsset(asset, "Assets/UMA/UMA_Assets/TPoses/" + name + "_TPose.asset"); EditorUtility.SetDirty(asset); AssetDatabase.SaveAssets(); } }
static void ExtractTPose() { var selectedObjects = Selection.objects; if (selectedObjects.Length > 0) { bool extracted = false; foreach (var selectedObject in selectedObjects) { var assetPath = AssetDatabase.GetAssetPath(selectedObject); if (!string.IsNullOrEmpty(assetPath)) { // Get asset path directory var assetDirectory = new FileInfo(assetPath).Directory.FullName + Path.DirectorySeparatorChar + "TPoses"; // Trim off the path at "Assets" to get the relative path to the assets directory assetDirectory = assetDirectory.Substring(assetDirectory.IndexOf("Assets")); var modelImporter = AssetImporter.GetAtPath(assetPath) as ModelImporter; if (modelImporter != null) { var asset = UmaTPose.CreateInstance <UMA.UmaTPose>(); asset.ReadFromHumanDescription(modelImporter.humanDescription); var name = selectedObject.name; if (name.EndsWith("(Clone)")) { name = name.Substring(0, name.Length - 7); asset.boneInfo[0].name = name; asset.Serialize(); } if (!Directory.Exists(assetDirectory)) { Directory.CreateDirectory(assetDirectory); } try { AssetDatabase.CreateAsset(asset, assetDirectory + Path.DirectorySeparatorChar + name + "_TPose.asset"); } catch (UnityException e) { Debug.Log(e.ToString()); } extracted = true; } } } if (extracted) { AssetDatabase.SaveAssets(); return; } } foreach (var animator in Transform.FindObjectsOfType(typeof(Animator)) as Animator[]) { var asset = UmaTPose.CreateInstance <UmaTPose>(); asset.ReadFromTransform(animator); var name = animator.name; if (name.EndsWith("(Clone)")) { name = name.Substring(0, name.Length - 7); asset.boneInfo[0].name = name; asset.Serialize(); } if (!Directory.Exists("Assets/UMA/UMA_Assets/TPoses")) { Directory.CreateDirectory("Assets/UMA/UMA_Assets/TPoses"); } AssetDatabase.CreateAsset(asset, "Assets/UMA/UMA_Assets/TPoses/" + name + "_TPose.asset"); EditorUtility.SetDirty(asset); AssetDatabase.SaveAssets(); } }
static void ExtractTPose() { var selectedObjects = Selection.objects; if (selectedObjects.Length > 0) { bool extracted = false; foreach (var selectedObject in selectedObjects) { var assetPath = AssetDatabase.GetAssetPath(selectedObject); if (!string.IsNullOrEmpty(assetPath)) { // Get asset path directory var assetDirectory = new FileInfo(assetPath).Directory.FullName + Path.DirectorySeparatorChar + "TPoses"; // Trim off the path at "Assets" to get the relative path to the assets directory assetDirectory = assetDirectory.Substring(assetDirectory.IndexOf("Assets")); var modelImporter = AssetImporter.GetAtPath(assetPath) as ModelImporter; if (modelImporter != null) { var asset = UmaTPose.CreateInstance <UMA.UmaTPose>(); asset.ReadFromHumanDescription(modelImporter.humanDescription); var name = selectedObject.name; if (name.EndsWith("(Clone)")) { name = name.Substring(0, name.Length - 7); asset.boneInfo[0].name = name; asset.Serialize(); } if (!Directory.Exists(assetDirectory)) { Directory.CreateDirectory(assetDirectory); } try { AssetDatabase.CreateAsset(asset, assetDirectory + Path.DirectorySeparatorChar + name + "_TPose.asset"); } catch (UnityException e) { Debug.Log(e.ToString()); } extracted = true; } } } if (extracted) { AssetDatabase.SaveAssets(); return; } } foreach (var animator in Transform.FindObjectsOfType(typeof(Animator)) as Animator[]) { var asset = UmaTPose.CreateInstance <UmaTPose>(); asset.ReadFromTransform(animator); var name = animator.name; if (name.EndsWith("(Clone)")) { name = name.Substring(0, name.Length - 7); asset.boneInfo[0].name = name; asset.Serialize(); } // Default path string path = "Assets/UMA/Content/Generated/TPoses"; string[] inds = AssetDatabase.FindAssets("AssetIndexer t:umaassetindexer"); if (inds.Length > 0) { // If UMA has moved, then move the pose path also. string tpath = AssetDatabase.GUIDToAssetPath(inds[0]); int pos = tpath.IndexOf("UMA/InternalDataStore", System.StringComparison.OrdinalIgnoreCase); string UMABase = tpath.Substring(0, pos) + "/UMA"; path = UMABase + "Content/Generated/TPoses"; } if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } AssetDatabase.CreateAsset(asset, path + "/" + name + "_TPose.asset"); EditorUtility.SetDirty(asset); AssetDatabase.SaveAssets(); } }