public List <ysSkillBundleData.SkillCombieInfo> ReadSkillArtInfoList() { DirectoryInfo directoryInfo = new DirectoryInfo(data.inputDirectoryPath); FileInfo[] allFiles = directoryInfo.GetFiles(); List <string> skillerNameList = new List <string>(); List <ysSkillBundleData.SkillCombieInfo> skillArtInfoList = new List <ysSkillBundleData.SkillCombieInfo>(); ysSkillBundleData.SkillCombieInfo skillArtInfo = new ysSkillBundleData.SkillCombieInfo(); for (int i = 0; i < allFiles.Length; i++) { if (allFiles[i].Name.Contains(".prefab") && allFiles[i].Name.Contains("_") && !allFiles[i].Name.Contains(".meta") && !CheckStringMatch(allFiles[i].Name, data.ignoreStrings)) { string[] tempx00 = allFiles[i].Name.Split(new string[] { "_" }, System.StringSplitOptions.RemoveEmptyEntries); string skillerName = tempx00[1]; string skillerType = tempx00[0]; if (!skillerNameList.Contains(skillerName)) { skillerNameList.Add(skillerName); skillArtInfo = new ysSkillBundleData.SkillCombieInfo(); skillArtInfo.skillPrefabs = new List <GameObject>(); skillArtInfo.skillerName = skillerName; skillArtInfo.skillerNameCN = CheckNameMap(skillerName); skillArtInfoList.Add(skillArtInfo); } else { } string prefabPath = "Assets" + allFiles[i].FullName.Split(new string[] { Path.DirectorySeparatorChar + "Assets" }, 0)[1]; skillArtInfo.skillPrefabs.Add(AssetDatabase.LoadAssetAtPath <GameObject>(prefabPath)); } } return(skillArtInfoList); }
public void ExportOneSkillCombine(ysSkillBundleData.SkillCombieInfo skillCombine) { // Debug.Log(Assembly.GetAssembly(this.GetType())); //Type typeSkillArtBase = Assembly.Load("Assembly-CSharp").GetType("ysSkillArtBase"); //Type typeSkillSegmentArt = Assembly.Load("Assembly-CSharp").GetType("ysSkillSegmentArt"); string[] paths = new string[skillCombine.skillPrefabs.Count]; for (int i = 0; i < skillCombine.skillPrefabs.Count; i++) { //GameObject prefab = DeepCopyAsset(skillCombine.skillPrefabs[i]); //MonoBehaviour[] monos = prefab.GetComponents<MonoBehaviour>(); //Type skillArtBase = monos[0].GetType(); // skillArtBase.GetFields(); // FieldInfo[] skillArtBaseFields = skillArtBase.GetFields(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly); // for (int j = 0; j < skillArtBaseFields.Length; j++) // { // Debug.Log(skillArtBaseFields[j].Name); // } paths[i] = GetCopyAssetPath(skillCombine.skillPrefabs[i]); //AssetDatabase.GetAssetPath(skillCombine.skillPrefabs[i]); } AssetBundleBuild[] buildArray = new AssetBundleBuild[1]; buildArray[0].assetBundleName = FormatOutputName(skillCombine.skillerName); buildArray[0].assetNames = paths; BuildTarget buildTaget = BuildTarget.Android; switch (data.buildTarget) { case ysEditorData.Platform.android: buildTaget = BuildTarget.Android; break; case ysEditorData.Platform.ios: buildTaget = BuildTarget.iOS; break; default: break; } BuildPipeline.BuildAssetBundles( data.outputDirectoryPath, buildArray, BuildAssetBundleOptions.DeterministicAssetBundle | BuildAssetBundleOptions.ForceRebuildAssetBundle, buildTaget); EditorUtility.DisplayDialog("提示", skillCombine.skillerName + "技能导出成功!", "继续"); Debug.Log(skillCombine.skillerName + " exports succeed..."); }