public static void CreateAsset(stageData editItem, int areaIndex) { stageData item = ScriptableObject.CreateInstance <stageData>(); item.entryEnemy = new List <EnemyDetail> (); item.entryEnemy = editItem.entryEnemy; //アセットを保存するパス string path = AssetDatabase.GenerateUniqueAssetPath("Assets/Resources/stageData/" + "stage" + areaIndex + ".asset"); AssetDatabase.CreateAsset(item, path); AssetDatabase.SaveAssets(); EditorUtility.FocusProjectWindow(); Selection.activeObject = item; }
// Update is called once per frame void Update() { int WorldID = 1; SD = Resources.Load("ExcelData/stageData") as stageData; if (activScene == "W1") { if (stageMass.MassName == "boss") { Create(2, WorldID); } } WorldID++; if (activScene == "W2") { if (stageMass.MassName == "boss") { Create(6, WorldID); // ディアナが仲間になる sceneNavigator.GetComponent <StatusControl>().SetAddCharID(3); } } WorldID++; if (activScene == "W3") { if (stageMass.MassName == "boss") { Create(11, WorldID); // リリーが仲間になる sceneNavigator.GetComponent <StatusControl>().SetAddCharID(4); } } WorldID++; if (activScene == "W4") { if (stageMass.MassName == "boss") { Create(17, WorldID); // エリザが仲間になる sceneNavigator.GetComponent <StatusControl>().SetAddCharID(5); } } }
static public void Load(int stageIndex) { prefabs = null; prefabs = Resources.LoadAll <GameObject>("Prefabs"); Dictionary <string, GameObject> prefabsDic = new Dictionary <string, GameObject>(); foreach (GameObject prefab in prefabs) { prefabsDic.Add(prefab.name, prefab); } stageData item = Resources.Load("stageData/stage" + stageIndex) as stageData; if (item == null) { item = Resources.Load("stageData/stage0") as stageData; } foreach (EnemyDetail ed in item.entryEnemy) { GameObject obj; GameObject[] stages = new GameObject[] { null, null, null }; stages [0] = GameObject.Find("PauseObjects/area/gameStage1"); stages [1] = GameObject.Find("PauseObjects/area/gameStage2"); stages [2] = GameObject.Find("PauseObjects/area/gameStage3"); if (ed.prefabName == "gamePlayer" && GameObject.Find("gamePlayer")) { GameObject player = GameObject.Find("gamePlayer"); Destroy(player); } if (ed.prefabName == "spawnPoint" && GameObject.Find("PauseObjects/area/gameStage" + (ed.stageIndex + 1).ToString() + "/spawnPoint")) { GameObject sp = GameObject.Find("PauseObjects/area/gameStage" + (ed.stageIndex + 1).ToString() + "/spawnPoint"); Destroy(sp.gameObject); } obj = (GameObject)Instantiate(prefabsDic[ed.prefabName], ed.enemy_pos, ed.enemy_rot); obj.transform.localScale = ed.enemy_scl; obj.transform.parent = stages [ed.stageIndex].transform; obj.name = ed.prefabName; } }
static public void allCreate() { string[] guids = new string[99]; string path = AssetDatabase.GUIDToAssetPath(guids [0]); stageData obj = AssetDatabase.LoadAssetAtPath <stageData> (path); for (int allCnt = 0; allCnt < 99; allCnt++) { stageData sd = new stageData { }; if (Resources.Load("OriginalStageData/stage" + allCnt.ToString())) { string a = "Resources/OriginalStageData/stage" + allCnt.ToString(); AssetDatabase.DeleteAsset(a); } saveStageData.CreateAsset(sd, allCnt); AssetDatabase.Refresh(); } }
// Update is called once per frame void Update() { // ステージのカウント用 int count = 0; // ワールドのID int WorldID = 0; SD = Resources.Load("ExcelData/stageData") as stageData; if (mapChar.activScene == "W1") { WorldID = 1; if (stageMass.MassName == "battle1") { Create(count, WorldID); } count++; if (stageMass.MassName == "battle2") { Create(count, WorldID); } } if (mapChar.activScene == "W2") { count = 3; WorldID = 2; if (stageMass.MassName == "battle1") { Create(count, WorldID); } count++; if (stageMass.MassName == "battle2") { Create(count, WorldID); } count++; if (stageMass.MassName == "battle3") { Create(count, WorldID); } } if (mapChar.activScene == "W3") { count = 7; WorldID = 3; if (stageMass.MassName == "battle1") { Create(count, WorldID); } count++; if (stageMass.MassName == "battle2") { Create(count, WorldID); } count++; if (stageMass.MassName == "battle3") { Create(count, WorldID); } count++; if (stageMass.MassName == "battle4") { Create(count, WorldID); } } if (mapChar.activScene == "W4") { count = 12; WorldID = 4; if (stageMass.MassName == "battle1") { Create(count, WorldID); } count++; if (stageMass.MassName == "battle2") { Create(count, WorldID); } count++; if (stageMass.MassName == "battle3") { Create(count, WorldID); } count++; if (stageMass.MassName == "battle4") { Create(count, WorldID); } count++; if (stageMass.MassName == "battle5") { Create(count, WorldID); } } }
void OnGUI() { if (isFirstTime) { isFirstTime = false; prefabs = Resources.LoadAll <GameObject>("Prefabs"); Array.Resize(ref textureList, prefabs.Length); stageNum stageNum = stageNum.stage1; for (int i = 0; i < prefabs.Length; i++) { if (prefabs [i].GetComponent <SpriteRenderer> ()) { textureList [i] = prefabs [i].GetComponent <SpriteRenderer> ().sprite.texture; } else if (prefabs [i].GetComponentInChildren <SpriteRenderer> ()) { textureList [i] = prefabs [i].GetComponentInChildren <SpriteRenderer> ().sprite.texture; } else { textureList [i] = null; } } foreach (GameObject obj in UnityEngine.Object.FindObjectsOfType(typeof(GameObject))) { if (obj.name == "gameStage1") { stages [0] = obj; } if (obj.name == "gameStage2") { stages [1] = obj; } if (obj.name == "gameStage3") { stages [2] = obj; } } } if (EditorApplication.isPlaying) { isFirstTime = true; } if (!EditorApplication.isPlaying) { int mod = textureList.Length % 5; int length = (textureList.Length - mod) / 5; GameObject obj; GameObject[] sel = { null }; // EditorGUILayoutの使用例. EditorGUILayout.LabelField("createEnemy"); for (int j = 0; j < length; j++) { for (int i = 0; i < 5; i++) { if (textureList [i + j * 5]) { if (GUI.Button(new Rect(20.0f + i * 55.0f, 20.0f + j * 55.0f, 50.0f, 50.0f), textureList [i + j * 5])) { Debug.Log(prefabs [i + j * 5].name); obj = GameObject.Instantiate(prefabs [i + j * 5].gameObject); obj.transform.parent = stages [stageIndex].transform; obj.transform.position = stages [stageIndex].transform.position; obj.name = prefabs [i + j * 5].name; sel [0] = obj; Selection.objects = sel; currentSerchObject = obj; SceneView.onSceneGUIDelegate += sceneView; Undo.RegisterCreatedObjectUndo(obj, "object create"); } } else { if (GUI.Button(new Rect(20.0f + i * 55.0f, 20.0f + j * 55.0f, 50.0f, 50.0f), prefabs [i + j * 5].name)) { Debug.Log(prefabs [i + j * 5].name); obj = GameObject.Instantiate(prefabs [i + j * 5].gameObject); obj.transform.parent = stages [stageIndex].transform; obj.transform.position = stages [stageIndex].transform.position; obj.name = prefabs [i + j * 5].name; sel [0] = obj; Selection.objects = sel; currentSerchObject = obj; SceneView.onSceneGUIDelegate += sceneView; Undo.RegisterCreatedObjectUndo(obj, "object create"); } } } } for (int i = 0; i < mod; i++) { if (textureList [i + length * 5]) { if (GUI.Button(new Rect(20.0f + i * 55.0f, 20.0f + length * 55.0f, 50.0f, 50.0f), textureList [i + length * 5])) { Debug.Log(prefabs [i + length * 5].name); obj = GameObject.Instantiate(prefabs [i + length * 5].gameObject); obj.transform.parent = stages [stageIndex].transform; obj.transform.position = stages [stageIndex].transform.position; obj.name = prefabs [i + length * 5].name; sel [0] = obj; Selection.objects = sel; currentSerchObject = obj; SceneView.onSceneGUIDelegate += sceneView; Undo.RegisterCreatedObjectUndo(obj, "object create"); } } else { if (GUI.Button(new Rect(20.0f + i * 55.0f, 20.0f + length * 55.0f, 50.0f, 50.0f), prefabs [i + length * 5].name)) { Debug.Log(prefabs [i + length * 5].name); obj = GameObject.Instantiate(prefabs [i + length * 5].gameObject); obj.transform.parent = stages [stageIndex].transform; obj.transform.position = stages [stageIndex].transform.position; sel [0] = obj; Selection.objects = sel; currentSerchObject = obj; SceneView.onSceneGUIDelegate += sceneView; Undo.RegisterCreatedObjectUndo(obj, "object create"); } } } numtoint = (stageNum)EditorGUI.EnumPopup(new Rect(20.0f, 20.0f + (1 + length) * 55.0f, 270.0f, 10.0f), "create on stage index", numtoint); stageIndex = (int)numtoint; createAreaIndex = EditorGUI.IntField(new Rect(20.0f, 20.0f + (1 + length) * 62.0f, 270.0f, 15.0f), "createAreaIndex", createAreaIndex); if (GUI.Button(new Rect(20.0f, 20.0f + (1 + length) * 69.0f, 270.0f, 50.0f), "SaveDataExport")) { stageData sd = new stageData { }; sd.entryEnemy = new List <EnemyDetail> (); for (int i = 0; i < 3; i++) { foreach (Transform child in stages[i].transform) { if (child.name != "defaultObject") { EnemyDetail ed = new EnemyDetail(); ed.prefabName = child.name; ed.stageIndex = i; ed.enemy_pos = child.position; ed.enemy_rot = child.rotation; ed.enemy_scl = child.localScale; sd.entryEnemy.Add(ed); } } } if (Resources.Load("stageData/stage" + createAreaIndex.ToString())) { string a = "Resources/stageData/stage" + createAreaIndex.ToString(); AssetDatabase.DeleteAsset(a); } saveStageData.CreateAsset(sd, createAreaIndex); AssetDatabase.Refresh(); } } }
static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) { foreach (string asset in importedAssets) { if (!filePath.Equals(asset)) { continue; } stageData data = (stageData)AssetDatabase.LoadAssetAtPath(exportPath, typeof(stageData)); if (data == null) { data = ScriptableObject.CreateInstance <stageData> (); AssetDatabase.CreateAsset((ScriptableObject)data, exportPath); data.hideFlags = HideFlags.NotEditable; } data.sheets.Clear(); using (FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { IWorkbook book = null; if (Path.GetExtension(filePath) == ".xls") { book = new HSSFWorkbook(stream); } else { book = new XSSFWorkbook(stream); } foreach (string sheetName in sheetNames) { ISheet sheet = book.GetSheet(sheetName); if (sheet == null) { Debug.LogError("[QuestData] sheet not found:" + sheetName); continue; } stageData.Sheet s = new stageData.Sheet(); s.name = sheetName; for (int i = 1; i <= sheet.LastRowNum; i++) { IRow row = sheet.GetRow(i); ICell cell = null; stageData.Param p = new stageData.Param(); cell = row.GetCell(0); p.stage = (int)(cell == null ? 0 : cell.NumericCellValue); cell = row.GetCell(1); p.enemy_count = (int)(cell == null ? 0 : cell.NumericCellValue); cell = row.GetCell(2); p.enemy_typeCount = (int)(cell == null ? 0 : cell.NumericCellValue); cell = row.GetCell(4); p.enemy1 = (int)(cell == null ? 0 : cell.NumericCellValue); cell = row.GetCell(5); p.enemy2 = (int)(cell == null ? 0 : cell.NumericCellValue); cell = row.GetCell(6); p.enemy3 = (int)(cell == null ? 0 : cell.NumericCellValue); cell = row.GetCell(7); p.enemy4 = (int)(cell == null ? 0 : cell.NumericCellValue); cell = row.GetCell(8); p.enemy5 = (int)(cell == null ? 0 : cell.NumericCellValue); cell = row.GetCell(9); p.enemy6 = (int)(cell == null ? 0 : cell.NumericCellValue); cell = row.GetCell(10); p.enemy7 = (int)(cell == null ? 0 : cell.NumericCellValue); cell = row.GetCell(11); p.enemy8 = (int)(cell == null ? 0 : cell.NumericCellValue); cell = row.GetCell(12); p.BGM = (int)(cell == null ? 0 : cell.NumericCellValue); cell = row.GetCell(13); p.EXP = (cell == null ? 0.0 : cell.NumericCellValue); s.list.Add(p); } data.sheets.Add(s); } } ScriptableObject obj = AssetDatabase.LoadAssetAtPath(exportPath, typeof(ScriptableObject)) as ScriptableObject; EditorUtility.SetDirty(obj); } }