Exemple #1
0
    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);
    }
Exemple #2
0
    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...");
    }