public static void MakeDataSeet() { List <Type> addList = CSMaker.ReadClass(); foreach (Type item in addList) { MakeData(item); } }
public static void LoadExcelAndMakeCSV() { List <Type> addList = CSMaker.ReadClass(); foreach (Type item in addList) { ReadExcel(item); } }
//アセットバンドル管理リストを生成 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(); }
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); }
//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); }
/// <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); }
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); }
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); } } }
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); }
//各要素の描画 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(); * } */ }