Рефакторинг сцены главного меню.
1) Реогранизована иерархия 2) Удалены неиспользуемые элементы 3) Список уровней формируется в GameManagment списком элементов LevelModel
This commit is contained in:
parent
f18e8ffe51
commit
144aeada89
8
Assets/Scenes/Levels.meta
Normal file
8
Assets/Scenes/Levels.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ac12c3e8b1ced1d43829c4a9be9d1200
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
17
Assets/Scenes/Levels/Level 1.asset
Normal file
17
Assets/Scenes/Levels/Level 1.asset
Normal file
@ -0,0 +1,17 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 9391feb4ca90a65468a8a388294bc5b1, type: 3}
|
||||
m_Name: Level 1
|
||||
m_EditorClassIdentifier:
|
||||
SceneName: Level_1
|
||||
Name: MATS
|
||||
MenuSprite: {fileID: 21300000, guid: 426478b073313244bbe84d3ec1cafa64, type: 3}
|
8
Assets/Scenes/Levels/Level 1.asset.meta
Normal file
8
Assets/Scenes/Levels/Level 1.asset.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d2b1e56b926cd5c47bf02a7b708b6290
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
17
Assets/Scenes/Levels/Level 2.asset
Normal file
17
Assets/Scenes/Levels/Level 2.asset
Normal file
@ -0,0 +1,17 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 9391feb4ca90a65468a8a388294bc5b1, type: 3}
|
||||
m_Name: Level 2
|
||||
m_EditorClassIdentifier:
|
||||
SceneName: Level_2
|
||||
Name: EMIR
|
||||
MenuSprite: {fileID: 21300000, guid: 29916103981328e438052adcf04f2737, type: 3}
|
8
Assets/Scenes/Levels/Level 2.asset.meta
Normal file
8
Assets/Scenes/Levels/Level 2.asset.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6cef405d05be36f489f8d16e3df67868
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
9
Assets/Scenes/Levels/LevelModel.cs
Normal file
9
Assets/Scenes/Levels/LevelModel.cs
Normal file
@ -0,0 +1,9 @@
|
||||
using UnityEngine;
|
||||
|
||||
[CreateAssetMenu(fileName = "New Level", menuName = "Levels/New Level")]
|
||||
public class LevelModel : ScriptableObject
|
||||
{
|
||||
public string SceneName;
|
||||
public string Name;
|
||||
public Sprite MenuSprite;
|
||||
}
|
11
Assets/Scenes/Levels/LevelModel.cs.meta
Normal file
11
Assets/Scenes/Levels/LevelModel.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9391feb4ca90a65468a8a388294bc5b1
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
17
Assets/Scenes/Levels/TestLevel.asset
Normal file
17
Assets/Scenes/Levels/TestLevel.asset
Normal file
@ -0,0 +1,17 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 9391feb4ca90a65468a8a388294bc5b1, type: 3}
|
||||
m_Name: TestLevel
|
||||
m_EditorClassIdentifier:
|
||||
SceneName: TestLevel
|
||||
Name: TEST
|
||||
MenuSprite: {fileID: 21300000, guid: 65b81d2bb7d94e646a4a3ea517c9aea2, type: 3}
|
8
Assets/Scenes/Levels/TestLevel.asset.meta
Normal file
8
Assets/Scenes/Levels/TestLevel.asset.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 245ed2714d05f1e4c95aedea30762644
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
@ -1,61 +0,0 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using TMPro;
|
||||
|
||||
public class ChooseLevelButtonsTasks : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private Image menuLevelImg;
|
||||
[SerializeField] private List<Sprite> menuSprites;
|
||||
[SerializeField] private TextMeshProUGUI gameText;
|
||||
|
||||
[SerializeField] private GameObject btnNext, btnPrev;
|
||||
|
||||
private List<string> menuText = new List<string> { "MATS", "EMIR" };
|
||||
|
||||
private int levelsAmount = 2;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
btnNext.SetActive(true);
|
||||
btnPrev.SetActive(false);
|
||||
}
|
||||
|
||||
public void OnPrevBtnClick()
|
||||
{
|
||||
GameData.currentChosenLevel--;
|
||||
if (GameData.currentChosenLevel < 1)
|
||||
{
|
||||
GameData.currentChosenLevel = levelsAmount;
|
||||
}
|
||||
|
||||
menuLevelImg.sprite = menuSprites[GameData.currentChosenLevel - 1];
|
||||
gameText.text = menuText[GameData.currentChosenLevel - 1];
|
||||
|
||||
btnNext.SetActive(true);
|
||||
btnPrev.SetActive(false);
|
||||
}
|
||||
|
||||
public void OnNextBtnClick()
|
||||
{
|
||||
GameData.currentChosenLevel++;
|
||||
if (GameData.currentChosenLevel > levelsAmount)
|
||||
{
|
||||
GameData.currentChosenLevel = 1;
|
||||
}
|
||||
|
||||
menuLevelImg.sprite = menuSprites[GameData.currentChosenLevel - 1];
|
||||
gameText.text = menuText[GameData.currentChosenLevel - 1];
|
||||
|
||||
btnNext.SetActive(false);
|
||||
btnPrev.SetActive(true);
|
||||
}
|
||||
|
||||
public void OnTestBtnClick()
|
||||
{
|
||||
SceneLoader.LoadScene(3);
|
||||
}
|
||||
|
||||
}
|
64
Assets/Scripts/LevelChooser.cs
Normal file
64
Assets/Scripts/LevelChooser.cs
Normal file
@ -0,0 +1,64 @@
|
||||
using System.Collections.Generic;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class LevelChooser : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private List<LevelModel> _levels;
|
||||
[SerializeField] private Image _levelImage;
|
||||
[SerializeField] private TextMeshProUGUI _levelNameText;
|
||||
|
||||
[SerializeField] private GameObject _nextButton;
|
||||
[SerializeField] private GameObject _prevButton;
|
||||
|
||||
public LevelModel CurrentLevel => _levels[_currentLevelIndex];
|
||||
|
||||
private int _currentLevelIndex;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
_currentLevelIndex = 0;
|
||||
UpdateUI();
|
||||
}
|
||||
|
||||
public void ShowPreviousLevel()
|
||||
{
|
||||
_currentLevelIndex--;
|
||||
if (_currentLevelIndex < 0)
|
||||
{
|
||||
_currentLevelIndex = 0;
|
||||
}
|
||||
|
||||
UpdateUI();
|
||||
}
|
||||
|
||||
public void ShowNextLevel()
|
||||
{
|
||||
_currentLevelIndex++;
|
||||
if (_currentLevelIndex > _levels.Count - 1)
|
||||
{
|
||||
_currentLevelIndex = _levels.Count - 1;
|
||||
}
|
||||
|
||||
UpdateUI();
|
||||
}
|
||||
|
||||
private void UpdateUI()
|
||||
{
|
||||
_levelImage.sprite = CurrentLevel.MenuSprite;
|
||||
_levelNameText.text = CurrentLevel.Name;
|
||||
|
||||
UpdateButtonsVisibility();
|
||||
}
|
||||
|
||||
private void UpdateButtonsVisibility()
|
||||
{
|
||||
bool isFirstLevel = _currentLevelIndex == 0;
|
||||
bool isLastLevel = _currentLevelIndex == _levels.Count - 1;
|
||||
bool hasMultipleLevels = _levels.Count > 1;
|
||||
|
||||
_prevButton.SetActive(hasMultipleLevels && !isFirstLevel);
|
||||
_nextButton.SetActive(hasMultipleLevels && !isLastLevel);
|
||||
}
|
||||
}
|
17
Assets/Scripts/LevelLauncher.cs
Normal file
17
Assets/Scripts/LevelLauncher.cs
Normal file
@ -0,0 +1,17 @@
|
||||
using UnityEngine;
|
||||
|
||||
[RequireComponent(typeof(LevelChooser))]
|
||||
public class LevelLauncher : MonoBehaviour
|
||||
{
|
||||
private LevelChooser _levelChooser;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
_levelChooser = GetComponent<LevelChooser>();
|
||||
}
|
||||
|
||||
public void LaunchLevel()
|
||||
{
|
||||
SceneLoader.LoadScene(_levelChooser.CurrentLevel.SceneName);
|
||||
}
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class PlayBtnClick : MonoBehaviour
|
||||
{
|
||||
private Button btn;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
btn = GetComponent<Button>();
|
||||
|
||||
btn.onClick.AddListener(BtnTask);
|
||||
}
|
||||
|
||||
private void BtnTask()
|
||||
{
|
||||
//SceneLoader.LoadNextScene();
|
||||
SceneLoader.LoadScene(GameData.currentChosenLevel);
|
||||
}
|
||||
}
|
@ -19,4 +19,8 @@ public class SceneLoader : MonoBehaviour
|
||||
{
|
||||
SceneManager.LoadScene(sceneIndex);
|
||||
}
|
||||
public static void LoadScene(string sceneName)
|
||||
{
|
||||
SceneManager.LoadScene(sceneName);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user