/// <summary> /// Заполняет активную сцену в соответвии с описанием. /// </summary> /// <param name="levelUnitPositions">Описание положения юнитов.</param> private static void FillScene(LevelUnitPositions levelUnitPositions) { foreach (var unitPositionModel in levelUnitPositions.UnitPositionModels) { #if UNITY_EDITOR if (!Application.isPlaying) { var unit = (GameObject)PrefabUtility.InstantiatePrefab(unitPositionModel.GameObject); unit.transform.position = unitPositionModel.Position; unit.transform.rotation = unitPositionModel.Rotation; } else { ObjectsPoolsManager.Instance.SpawnFromPool( ((GameObject)unitPositionModel.GameObject).GetComponent <Unit>().Sid, unitPositionModel.Position, unitPositionModel.Rotation); } #else ObjectsPoolsManager.Instance.SpawnFromPool( ((GameObject)unitPositionModel.GameObject).GetComponent <Unit>().Sid, unitPositionModel.Position, unitPositionModel.Rotation); #endif } }
private void OnGUI() { _levelNameText = EditorUtils.ShowLine("New Level Name", _levelNameText); if (GUILayout.Button("Create Level")) { CreateLevel(); } _levelUnitPositions = EditorUtils.ShowLine("Level Asset", _levelUnitPositions); if (GUILayout.Button("Load Level")) { LoadLevel(); } if (GUILayout.Button("Clear Current Level")) { Clear(); } GUILayout.Space(10); if (GUILayout.Button("Edit Current Level")) { EditLevel(); } }
/// <summary> /// Загружает указанный уровень. /// </summary> /// <param name="levelUnitPositions">Описание уровня.</param> public static void LoadScene(LevelUnitPositions levelUnitPositions) { SceneManager.GetActiveScene(); ClearScene(); FillScene(levelUnitPositions); }