예제 #1
0
    public static void MakeDataSeet()
    {
        List <Type> addList = CSMaker.ReadClass();

        foreach (Type item in addList)
        {
            MakeData(item);
        }
    }
예제 #2
0
    public static void LoadExcelAndMakeCSV()
    {
        List <Type> addList = CSMaker.ReadClass();

        foreach (Type item in addList)
        {
            ReadExcel(item);
        }
    }
예제 #3
0
    //アセットバンドル管理リストを生成
    public static void MakeAssetBundleList()
    {
        string        filePath       = SystemSetting.GetAssetBundleListPath() + ".csv";
        List <Type>   typeNameList   = CSMaker.ReadClass();
        List <string> memberNameList = CSMaker.GetMemberList(typeof(AssetBundleData.Param));

        //Type curType = typeof(AssetBundleData.Param);

        /*
         * //アトラス未対応のため一旦コメントアウト
         *      using (Workaholism.IO.CsvWriter writer = new Workaholism.IO.CsvWriter (filePath, Encoding.GetEncoding ("utf-8"))) {
         *              List<string> headData = new List<string> ();
         *
         *              foreach (string fieldName in memberNameList) {
         *                      headData.Add ("\"" + fieldName + "\"");
         *              }
         *              writer.WriteLine (headData);
         *
         *              foreach (Type curData in typeNameList) {
         *      Debug.LogWarning("Type :" + curData);
         *                      List<string> lineData = new List<string> ();
         *                      int columnCount = 0;
         *
         *                      foreach (string fieldName in memberNameList) {
         *                              string addString = "";
         *
         *                              if (fieldName == "assetbundleName") {
         *                                      addString = "\"" + curData.Name + "\"";
         *                              } else if (fieldName == "version") {
         *                                      addString = "999";
         *                              } else if (fieldName == "type") {
         *                                      addString = "0";
         *                              } else if (fieldName == "update") {
         *                                      addString = "0";
         *                              } else if (fieldName == "arr_index") {
         *                                      addString = "0";
         *                              } else if (fieldName == "folderName") {
         *                                      addString = "\"" + SystemSetting.GetassetBundlePathPlane () + "\"";
         *                              } else {
         *                                      Debug.LogError ("データ定義に異常があります!!!!!!!" + fieldName);
         *                                      //異常なデータは出力してはいけないので強制停止
         *                                      break;
         *                              }
         *                              lineData.Add (addString);
         *                              columnCount++;
         *                      }
         *                      writer.WriteLine (lineData);
         *              }
         *      }
         */

        //SetScriptableData(typeof( AssetBundleData));
        ObjectCreate();
    }
예제 #4
0
    public static void StartMakeAssetBundle(BuildTarget target = BuildTarget.iOS)
    {
        Debug.LogWarning("MakeAssetBundle :");
        CSMaker.ReadClass();
        List <Type> addList = CSMaker.ReadClass();

        foreach (Type item in addList)
        {
            BuildStartGameData(item.Name + "Prefab", target);
        }

        AssetDatabase.Refresh(ImportAssetOptions.ImportRecursive);
    }
예제 #5
0
    //ExcelLoder生成ファイルの自動生成
    public static void MakeExcelLoaderFormat(Type _dataType)
    {
        string result = ReplaceTemplate(_dataType, "ExcelLoaderTemplate");

        FieldInfo[]   fieldInfoList  = CSMaker.GetFieldInfo(_dataType);
        List <string> memberNameList = CSMaker.GetMemberList(_dataType);

        int dataCount = 0;

        string tmpTypeString = "";

        foreach (string memberName in memberNameList)
        {
            tmpTypeString += "\n\t\t\t";
            string fieldType = fieldInfoList [dataCount].FieldType.ToString();

            switch (fieldType)
            {
            case "System.Single":
                tmpTypeString += "\t" + "tmpData." + memberName + " = (float)row.GetCell (iColumn++).NumericCellValue;";
                break;

            case "System.String":
                tmpTypeString += "\t" + "tmpData." + memberName + " = row.GetCell (iColumn++).StringCellValue;";
                break;

            case "System.Int32":
                tmpTypeString += "\t" + "tmpData." + memberName + " = (int)row.GetCell (iColumn++).NumericCellValue;";
                break;

            case "System.Boolean":
                tmpTypeString += "\t" + "tmpData." + memberName + " = BoolSetting(row.GetCell (iColumn++).StringCellValue);";
                break;

            default:
                break;
            }
            dataCount++;
        }
        result = Regex.Replace(result, "{DataSwitch}", "//DataSwitch :" + tmpTypeString);
        string fileURL = SystemSetting.GetEditorFileSrcPath() + _dataType.Name + "ExcelLoader.cs";

        CreateFormatFile(fileURL, result);
    }
예제 #6
0
    /// <summary>
    /// データの書き込み.
    /// </summary>
    public static void WriteExcelData(List <MasterLoadAudio.Data> listData, Type _dataType, Type _dataTypeSrc)
    {
        dataTitle = _dataType.Name;

        fieldInfoList  = CSMaker.GetFieldInfo(_dataTypeSrc);
        memberNameList = CSMaker.GetMemberList(_dataTypeSrc);

        Int32 iRow = 0;
        IRow  row;
        ICell cell;

        int generateCellCount = SystemSetting.GetInitGenerateCell();

        // ワークブックオブジェクト生成
        HSSFWorkbook workbook = new HSSFWorkbook();

        // シートオブジェクト生成
        ISheet sheet1 = workbook.CreateSheet("MainSeet");

        MakeSeetStyle(workbook);
        makeCellLow = 0;
        DataCellMake(sheet1, memberNameList);

        // セルを作成する(垂直方向)
        for (iRow = (makeCellLow); iRow < (generateCellCount + makeCellLow); iRow++)
        {
            MakeCell(sheet1, _dataType, iRow, listData);
        }

        row = sheet1.CreateRow(generateCellCount + makeCellLow);

        //アセットバンドル名
        cell = row.CreateCell(0);
        cell.SetCellValue("end");
        cell.CellStyle = blackBorder;

        string dataURL = SystemSetting.GetExcelSeetPath() + dataTitle + "Sheet.xls";

        // Excelファイル出力
        OutputExcelFile(dataURL, workbook);
        AssetDatabase.Refresh(ImportAssetOptions.ImportRecursive);
    }
예제 #7
0
    public static List <MasterLoadSprite.Data> GetListDataFromCSV(Type _dataType)
    {
        string    filePath = SystemSetting.GetResourcesCSVFilePath() + StringExtensions.UpperCamelToSnake(_dataType.Name) + "";
        TextAsset csv      = (TextAsset)Resources.Load(filePath, typeof(TextAsset)) as TextAsset;

        FieldInfo[]   fieldInfoList           = CSMaker.GetFieldInfo(typeof(MakeDataNamespace.MasterLoadSprite));
        List <string> memberNameList          = CSMaker.GetMemberList(typeof(MakeDataNamespace.MasterLoadSprite));
        List <MasterLoadSprite.Data> listData = new List <MasterLoadSprite.Data>();

        StringReader reader = new StringReader(csv.text);

        Type curType = typeof(MasterLoadSprite.Data);


        int rowNum = -1;

        while (reader.Peek() > -1)
        {
            MasterLoadSprite.Data lineData = new MasterLoadSprite.Data();
            int columnCount = 0;

            string   line   = reader.ReadLine();
            string[] values = line.Split(',');

            rowNum++;
            //0行はタイトルなので飛ばす
            if (rowNum == 0)
            {
                continue;
            }

            foreach (string item in values)
            {
                string    columnType      = memberNameList[columnCount];
                FieldInfo memberFieldInfo = fieldInfoList[columnCount];

                if (memberFieldInfo.FieldType.ToString() == "System.Int32")
                {
                    string convertStr = ConvertString(item);
                    int    setNumber  = int.Parse(convertStr);
                    curType.InvokeMember(columnType, BindingFlags.SetField, null, lineData, new object[] { setNumber });
                }
                else if (memberFieldInfo.FieldType.ToString() == "System.Single")
                {
                    string convertStr = ConvertString(item);
                    float  setNumber  = float.Parse(convertStr);
                    curType.InvokeMember(columnType, BindingFlags.SetField, null, lineData, new object[] { setNumber });
                }
                else if (memberFieldInfo.FieldType.ToString() == "System.String")
                {
                    string convertStr = ConvertString(item);
                    string setString  = convertStr.Substring(1, convertStr.Length - 2);
                    // エスケープされたダブルクオーテーションがない場合はそのままの文字列を利用する
                    if (convertStr.Contains("\"") == false)
                    {
                        setString = convertStr;
                    }
                    setString = setString.Replace("\\n", "\n");
                    curType.InvokeMember(columnType, BindingFlags.SetField, null, lineData, new object[] { setString });
                }
                else if (memberFieldInfo.FieldType.ToString() == "System.Boolean")
                {
                    if (item == "1")
                    {
                        curType.InvokeMember(columnType, BindingFlags.SetField, null, lineData, new object[] { true });
                    }
                    else
                    {
                        curType.InvokeMember(columnType, BindingFlags.SetField, null, lineData, new object[] { false });
                    }
                }
                else
                {
                    Debug.LogError("データ定義に異常があります!!!!!!!" + memberFieldInfo.FieldType);
                    //異常なデータは出力してはいけないので強制停止
                    break;
                }

                columnCount++;
            }
            listData.Add(lineData);
        }
        return(listData);
    }
예제 #8
0
    public static void MakeData(Type _type, List <MasterLoadSprite.Data> _dataObject)
    {
        string filePath = SystemSetting.GetCSVFilePath() + _type.Name + ".csv";
        List <MasterLoadSprite.Data> _MasterLoadSprite = _dataObject;

        FieldInfo[]   fieldInfoList  = CSMaker.GetFieldInfo(typeof(MakeDataNamespace.MasterLoadSprite));
        List <string> memberNameList = CSMaker.GetMemberList(typeof(MakeDataNamespace.MasterLoadSprite));
        Type          curType        = typeof(MasterLoadSprite.Data);

        using (Workaholism.IO.CsvWriter writer = new Workaholism.IO.CsvWriter(filePath, Encoding.GetEncoding("utf-8"))) {
            List <string> headData = new List <string>();

            foreach (string fieldName in memberNameList)
            {
                headData.Add("\"" + fieldName + "\"");
            }
            writer.WriteLine(headData);

            foreach (MasterLoadSprite.Data curData in _MasterLoadSprite)
            {
                List <string> lineData = new List <string>();

                int columnCount = 0;

                foreach (string fieldName in memberNameList)
                {
                    string getString = curType.InvokeMember(fieldName, BindingFlags.GetField, null, curData, null).ToString();

                    FieldInfo memberFieldInfo = fieldInfoList[columnCount];

                    string addString = "";

                    if (memberFieldInfo.FieldType.ToString() == "System.Int32")
                    {
                        addString = getString;
                    }
                    else if (memberFieldInfo.FieldType.ToString() == "System.Single")
                    {
                        addString = getString;
                    }
                    else if (memberFieldInfo.FieldType.ToString() == "System.String")
                    {
                        addString = "\"" + getString + "\"";
                    }
                    else if (memberFieldInfo.FieldType.ToString() == "System.Boolean")
                    {
                        if (getString == "true")
                        {
                            addString = "1";
                        }
                        else
                        {
                            addString = "0";
                        }
                    }
                    else
                    {
                        Debug.LogError("データ定義に異常があります!!!!!!!" + memberFieldInfo.FieldType);
                        //異常なデータは出力してはいけないので強制停止
                        break;
                    }

                    lineData.Add(addString);
                    columnCount++;
                }

                writer.WriteLine(lineData);
            }
        }
    }
예제 #9
0
    public static List <AssetBundleData.Param> GetListDataFromCSV(Type _dataType)
    {
        string filePath = SystemSetting.GetAssetBundleDataFolder() + _dataType.Name + "";
        //string filePath = SystemSetting.GetResourcesCSVFilePath() + _dataType.Name + "CSV";


        TextAsset csv = (TextAsset)Resources.Load(filePath, typeof(TextAsset)) as TextAsset;

        FieldInfo[]   fieldInfoList           = CSMaker.GetFieldInfo(typeof(AssetBundleData.Param));
        List <string> memberNameList          = CSMaker.GetMemberList(typeof(AssetBundleData.Param));
        List <AssetBundleData.Param> listData = new List <AssetBundleData.Param>();

        StringReader reader = new StringReader(csv.text);

        Type curType = typeof(AssetBundleData.Param);


        Debug.LogWarning("DataSet :" + csv);

        int rowNum = -1;

        while (reader.Peek() > -1)
        {
            AssetBundleData.Param lineData = new AssetBundleData.Param();
            int columnCount = 0;

            string   line   = reader.ReadLine();
            string[] values = line.Split(',');

            rowNum++;
            //0行はタイトルなので飛ばす
            if (rowNum == 0)
            {
                continue;
            }

            foreach (string item in values)
            {
                string    columnType      = memberNameList[columnCount];
                FieldInfo memberFieldInfo = fieldInfoList[columnCount];

                Debug.LogWarning("columnType :" + columnType.ToString());
                Debug.LogWarning("Field :" + memberFieldInfo.FieldType.ToString());

                if (memberFieldInfo.FieldType.ToString() == "System.Int32")
                {
                    int setNumber = int.Parse(item);
                    curType.InvokeMember(columnType, BindingFlags.SetField, null, lineData, new object[] { setNumber });
                }
                else if (memberFieldInfo.FieldType.ToString() == "System.Single")
                {
                    float setNumber = float.Parse(item);
                    curType.InvokeMember(columnType, BindingFlags.SetField, null, lineData, new object[] { setNumber });
                }
                else if (memberFieldInfo.FieldType.ToString() == "System.String")
                {
                    string setString = item.Substring(1, item.Length - 2);
                    curType.InvokeMember(columnType, BindingFlags.SetField, null, lineData, new object[] { setString });
                }
                else if (memberFieldInfo.FieldType.ToString() == "System.Boolean")
                {
                    if (item == "1")
                    {
                        curType.InvokeMember(columnType, BindingFlags.SetField, null, lineData, new object[] { true });
                    }
                    else
                    {
                        curType.InvokeMember(columnType, BindingFlags.SetField, null, lineData, new object[] { false });
                    }
                }
                else
                {
                    Debug.LogError("データ定義に異常があります!!!!!!!" + memberFieldInfo.FieldType);
                    //異常なデータは出力してはいけないので強制停止
                    break;
                }

                columnCount++;
            }
            listData.Add(lineData);
        }
        return(listData);
    }
예제 #10
0
    //各要素の描画
    void DrawProperties()
    {
        //AssetBundleTool debugViewer = target as AssetBundleTool;

        /*
         * EditorGUILayout.LabelField ("名前", "test");
         * EditorGUILayout.LabelField ("コメント", "test");
         *
         * EditorGUILayout.Separator ();
         */


        EditorGUILayout.Separator();

        /*
         * if (GUILayout.Button ("定義ファイル読み取り", GUILayout.Width (250f))) {
         *      CSMaker.ReadClass();
         * }
         */

        EditorGUILayout.HelpBox("アセットバンドル照合用のEXCELファイルを生成します.", MessageType.Info, true);

        if (GUILayout.Button("データチェッカーファイルを生成", GUILayout.Width(250f)))
        {
            AssetBudleDataChecker.DataSeetMake();
        }

        EditorGUILayout.Separator();

        EditorGUILayout.HelpBox("↓オブジェクト初期生成", MessageType.Info, true);

        if (GUILayout.Button("C#ファイル生成", GUILayout.Width(250f)))
        {
            CSMaker.CSParser();

            //スクリプタブルオブジェクト生成コードを生成
            CSMaker.CSParserObjectMaker();

            //Atach生成コードを設置
            CSMaker.MakeAtachHolderFormat();

            //CSV出入力系を生成
            CSMaker.MakeCSVLoader();

            //EXCEL出入力系を生成
            CSMaker.MakeExcelLoader();

            Debug.LogWarning("MakeEnd :");
        }


        EditorGUILayout.Separator();

        if (GUILayout.Button("スクリプタブルオブジェクト生成", GUILayout.Width(250f)))
        {
            //スクリプタブルオブジェクト生成
            CSMaker.GenerateScriptableObject();

            //スクリプタブルオブジェクトをアタッチ
            CSMaker.AtachObject();
            Debug.LogWarning("Holder生成とスクリプタブルオブジェクト設置");
        }


        EditorGUILayout.Separator();
                #if UNITY_IOS
        if (GUILayout.Button("データのアセットバンドル生成(iOS)", GUILayout.Width(250f)))
        {
            BuildAssetBundles.StartMakeAssetBundle(BuildTarget.iOS);
        }
        EditorGUILayout.Separator();
        if (GUILayout.Button("利用不可:データのアセットバンドル生成(Android)", GUILayout.Width(250f)))
        {
            Debug.LogError("Please SwitchPlatform for Android");
        }
                #elif UNITY_ANDROID
        if (GUILayout.Button("利用不可:データのアセットバンドル生成(iOS)", GUILayout.Width(250f)))
        {
            Debug.LogError("Please SwitchPlatform for iOS");
        }
        EditorGUILayout.Separator();
        if (GUILayout.Button("データのアセットバンドル生成(Android)", GUILayout.Width(250f)))
        {
            BuildAssetBundles.StartMakeAssetBundle(BuildTarget.Android);
        }
                #else
                #endif

//		EditorGUILayout.Separator();
//
//		if (GUILayout.Button ("データのアセットバンドル生成2", GUILayout.Width (250f))) {
//			BuildPipeline.BuildAssetBundles ("AssetBundles");
//		}

        EditorGUILayout.Separator();

        if (GUILayout.Button("Excelひな形生成(上書き注意)", GUILayout.Width(250f)))
        {
            ExcelParser.MakeDataSeet();
        }


        if (GUILayout.Button("CSVひな形生成(上書き注意)", GUILayout.Width(250f)))
        {
            CSVPerser.MakeCSV();
        }

        EditorGUILayout.HelpBox("↓オブジェクト初期生成", MessageType.Info, true);

        EditorGUILayout.Separator();

        if (GUILayout.Button("EXCEL→CSV変換(上書き注意)", GUILayout.Width(250f)))
        {
            ExcelLoader.LoadExcelAndMakeCSV();
            Debug.LogWarning("変換終了 :");
        }

        if (GUILayout.Button("CSV→EXCEL変換(上書き注意)", GUILayout.Width(250f)))
        {
            CSVLoader.LoadCSVAndMakeExcel();
            Debug.LogWarning("変換終了 :");
        }

        if (GUILayout.Button("CSV→ScriptableObject変換", GUILayout.Width(250f)))
        {
            CSMaker.SetSTODataFromCSV();
        }

        EditorGUILayout.Separator();

        EditorGUILayout.HelpBox("データローダシステム側を更新します", MessageType.Info, true);

        if (GUILayout.Button("データロードコンテナを更新", GUILayout.Width(250f)))
        {
            CSMaker.MakeDataContainer();
        }

        EditorGUILayout.Separator();

        EditorGUILayout.HelpBox("フォントのアセットバンドルを生成します", MessageType.Info, true);

                #if UNITY_IOS
        if (GUILayout.Button("BitmapFont(iOS)", GUILayout.Width(250f)))
        {
            BuildAssetBundles.MakeAssetBundle("AssetBundle/BitmapFont/", "BitmapFontPrefab", "BitmapFont/", BuildTarget.iOS);
        }
        if (GUILayout.Button("利用不可:BitmapFont(Android)", GUILayout.Width(250f)))
        {
            Debug.LogError("Please SwitchPlatform for Android");
        }
                #elif UNITY_ANDROID
        if (GUILayout.Button("利用不可:BitmapFont(iOS)", GUILayout.Width(250f)))
        {
            Debug.LogError("Please SwitchPlatform for iOS");
        }
        if (GUILayout.Button("BitmapFont(Android)", GUILayout.Width(250f)))
        {
            BuildAssetBundles.MakeAssetBundle("AssetBundle/BitmapFont/", "BitmapFontPrefab", "BitmapFont/", BuildTarget.Android);
        }
                #endif

        EditorGUILayout.Separator();

        EditorGUILayout.HelpBox("アトラスのアセットバンドルを生成します", MessageType.Info, true);

                #if UNITY_IOS
        foreach (string buildURL in buildAtlasPathArray)
        {
            if (GUILayout.Button(buildURL + "(iOS)", GUILayout.Width(250f)))
            {
                BuildAssetBundles.BuildStartAtlas(buildURL, BuildTarget.iOS);
            }
        }

        EditorGUILayout.Separator();

        foreach (string filename in buildAtlasNameArray)
        {
            if (GUILayout.Button("filename:" + filename + "(iOS)", GUILayout.Width(250f)))
            {
                BuildAssetBundles.BuildStartAtlasSingle("Assetbundle/Atlas/" + filename + "/", filename, "AssetBundles/Atlas/", BuildTarget.iOS);
            }
        }
                #elif UNITY_ANDROID
        foreach (string buildURL in buildAtlasPathArray)
        {
            if (GUILayout.Button(buildURL + "(Android)", GUILayout.Width(250f)))
            {
                BuildAssetBundles.BuildStartAtlas(buildURL, BuildTarget.Android);
            }
        }

        EditorGUILayout.Separator();

        foreach (string filename in buildAtlasNameArray)
        {
            if (GUILayout.Button("filename:" + filename + "(Android)", GUILayout.Width(250f)))
            {
                BuildAssetBundles.BuildStartAtlasSingle("Assetbundle/Atlas/" + filename, filename, "AssetBundles/Atlas/", BuildTarget.Android);
            }
        }
                #endif

        EditorGUILayout.Separator();

        EditorGUILayout.HelpBox("Audioのアセットバンドルを生成します", MessageType.Info, true);

                #if UNITY_IOS
        foreach (string buildURL in buildAudioDataArray)
        {
            if (GUILayout.Button(buildURL + "(iOS)", GUILayout.Width(250f)))
            {
                BuildAssetBundles.BuildStartAudio(buildURL, BuildTarget.iOS);
            }
        }
                #elif UNITY_ANDROID
        foreach (string buildURL in buildAudioDataArray)
        {
            if (GUILayout.Button(buildURL + "(Android)", GUILayout.Width(250f)))
            {
                BuildAssetBundles.BuildStartAudio(buildURL, BuildTarget.Android);
            }
        }
                #endif

        EditorGUILayout.Separator();

        EditorGUILayout.HelpBox("管理ファイルの生成を行います", MessageType.Info, true);

        if (GUILayout.Button("管理ファイルを更新", GUILayout.Width(250f)))
        {
            CSVPerser.MakeAssetBundleList();
        }

                #if UNITY_IOS
        if (GUILayout.Button("管理ファイルのアセットバンドル生成(iOS)", GUILayout.Width(250f)))
        {
            BuildAssetBundles.StartMakeAssetBundleList(BuildTarget.iOS);
        }
                #elif UNITY_ANDROID
        if (GUILayout.Button("管理ファイルのアセットバンドル生成(Android)", GUILayout.Width(250f)))
        {
            BuildAssetBundles.StartMakeAssetBundleList(BuildTarget.Android);
        }
                #endif

        EditorGUILayout.Separator();
        EditorGUILayout.Separator();
        EditorGUILayout.HelpBox("更新クラス。チェックをはずすとデータ生成の影響外になります。アセットバンドル生成だけ対象外", MessageType.Info, true);

        CSMaker.ReadMyToggle(); // 更新
        IList <string> list = new List <string>(CSMaker.dataSeetMyToggleDictionary.Keys);
        foreach (string str in list)
        {
            if (CSMaker.dataSeetMyToggleDictionary[str].Validate)
            {
                bool _flag = CSMaker.dataSeetMyToggleDictionary[str].Enable;
                CSMaker.dataSeetMyToggleDictionary[str].Enable = EditorGUILayout.Toggle(str, _flag);
            }
        }

        /*
         * foreach (string str in list)
         * {
         *  CSMaker.MyToggle toggle = CSMaker.dataSeetMyToggleDictionary[str];
         *
         *  // 有効であれば表示
         *  if (toggle.b_validate)
         *  {
         *      toggle.b_enable = EditorGUILayout.Toggle(str, toggle.b_enable);
         *      CSMaker.dataSeetMyToggleDictionary[str].b_enable = toggle.b_enable;
         *  }
         * }
         */

        EditorGUILayout.Separator();
        EditorGUILayout.Separator();

        EditorGUILayout.HelpBox("自動生成したデータやC#ファイルを全部削除します。取り扱いに注意!!!", MessageType.Info, true);

        /*
         * if (GUILayout.Button ("全データリセット。取り扱い注意!!", GUILayout.Width (250f))) {
         *      //BuildAssetBundles.StartMakeAssetBundleList();
         * }
         */
    }