diff --git a/Assets/AddressableResources/UI/Lobby/UIPanelLobby.prefab b/Assets/AddressableResources/UI/Lobby/UIPanelLobby.prefab index 517605e..77eaad8 100644 --- a/Assets/AddressableResources/UI/Lobby/UIPanelLobby.prefab +++ b/Assets/AddressableResources/UI/Lobby/UIPanelLobby.prefab @@ -32085,6 +32085,7 @@ MonoBehaviour: m_EditorClassIdentifier: _characterRoot: {fileID: 8607678279704524677} _singleStageButton: {fileID: 8607678279483521074} + _playerListButton: {fileID: 8607678279159893190} --- !u!1 &8607678279519452447 GameObject: m_ObjectHideFlags: 0 @@ -51292,7 +51293,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_text: CHARACTER + m_text: PLAYER m_isRightToLeft: 0 m_fontAsset: {fileID: 11400000, guid: 50c12c23294124aa48490c44ac65a9e4, type: 2} m_sharedMaterial: {fileID: 7746803525459343344, guid: 50c12c23294124aa48490c44ac65a9e4, diff --git a/Assets/AddressableResources/UI/Lobby/UIPanelPlayerList.prefab b/Assets/AddressableResources/UI/Lobby/UIPanelPlayerList.prefab index 56414bb..70d2efe 100644 --- a/Assets/AddressableResources/UI/Lobby/UIPanelPlayerList.prefab +++ b/Assets/AddressableResources/UI/Lobby/UIPanelPlayerList.prefab @@ -19055,6 +19055,128 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 +--- !u!1 &5588192970868326085 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6206984379070538658} + - component: {fileID: 338784098782169810} + - component: {fileID: 902278719487509366} + m_Layer: 5 + m_Name: Point Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6206984379070538658 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5588192970868326085} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 1.81} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7459603269180336631} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -0.38, y: 1.1} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!108 &338784098782169810 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5588192970868326085} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 2 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 10 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!114 &902278719487509366 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5588192970868326085} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 3 + m_UsePipelineSettings: 1 + m_AdditionalLightsShadowResolutionTier: 2 + m_LightLayerMask: 1 + m_RenderingLayers: 1 + m_CustomShadowLayers: 0 + m_ShadowLayerMask: 1 + m_ShadowRenderingLayers: 1 + m_LightCookieSize: {x: 1, y: 1} + m_LightCookieOffset: {x: 0, y: 0} + m_SoftShadowQuality: 0 --- !u!1 &5859963307509869375 GameObject: m_ObjectHideFlags: 0 @@ -20188,7 +20310,8 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 21} m_LocalScale: {x: 300, y: 300, z: 300} m_ConstrainProportionsScale: 0 - m_Children: [] + m_Children: + - {fileID: 6206984379070538658} m_Father: {fileID: 7459603270314721886} m_LocalEulerAnglesHint: {x: 8.328, y: 161.727, z: -3.896} m_AnchorMin: {x: 0.5, y: 0.5} @@ -20988,6 +21111,7 @@ GameObject: - component: {fileID: 7459603269412839174} - component: {fileID: 7459603269412839168} - component: {fileID: 7459603269412839169} + - component: {fileID: 4925477241957967913} m_Layer: 5 m_Name: Button_Arrow_R m_TagString: Untagged @@ -21052,6 +21176,50 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 +--- !u!114 &4925477241957967913 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7459603269412839175} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 7459603269412839169} + m_OnClick: + m_PersistentCalls: + m_Calls: [] --- !u!1 &7459603269426521990 GameObject: m_ObjectHideFlags: 0 @@ -23778,6 +23946,7 @@ GameObject: - component: {fileID: 7459603270130791829} - component: {fileID: 7459603270130791831} - component: {fileID: 7459603270130791828} + - component: {fileID: 4540790558316657538} m_Layer: 5 m_Name: Button_Arrow_L m_TagString: Untagged @@ -23842,6 +24011,50 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 +--- !u!114 &4540790558316657538 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7459603270130791834} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 7459603270130791828} + m_OnClick: + m_PersistentCalls: + m_Calls: [] --- !u!1 &7459603270134483779 GameObject: m_ObjectHideFlags: 0 @@ -25038,6 +25251,7 @@ GameObject: - component: {fileID: 7459603270371822157} - component: {fileID: 7459603270371822159} - component: {fileID: 7459603270371822156} + - component: {fileID: 8001649805687928187} m_Layer: 5 m_Name: Button_Home m_TagString: Untagged @@ -25103,6 +25317,50 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 +--- !u!114 &8001649805687928187 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7459603270371822002} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 7459603270371822156} + m_OnClick: + m_PersistentCalls: + m_Calls: [] --- !u!1 &7459603270376292508 GameObject: m_ObjectHideFlags: 0 @@ -26584,6 +26842,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 7459603270933694283} + - component: {fileID: 404385109801692332} m_Layer: 5 m_Name: UIPanelPlayerList m_TagString: Untagged @@ -26615,6 +26874,30 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &404385109801692332 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7459603270933694280} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: aed7eae726c3c6a48bdd992d684750a9, type: 3} + m_Name: + m_EditorClassIdentifier: + _playerRoot: {fileID: 7459603269180336631} + _selectButton: {fileID: 7459603269531572061} + _prevButton: {fileID: 4540790558316657538} + _nextButton: {fileID: 4925477241957967913} + _backButton: {fileID: 7459603269466600724} + _homeButton: {fileID: 8001649805687928187} + _strSlider: {fileID: 259823808637671982} + _rangeSlider: {fileID: 5692202979830137119} + _speedSlider: {fileID: 2648011094927163633} + _strText: {fileID: 7459603269834701088} + _rangeText: {fileID: 7666985169112247169} + _speedText: {fileID: 4975337925991424715} --- !u!1 &7459603270962932991 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Etc/Constants.cs b/Assets/Scripts/Etc/Constants.cs index 1b50e1f..a269cc8 100644 --- a/Assets/Scripts/Etc/Constants.cs +++ b/Assets/Scripts/Etc/Constants.cs @@ -11,4 +11,9 @@ public static class Constants public static readonly float CAM_TURN_SPEED = 40; public static readonly float JUMP_FORCE = 3f; + + //Àӽà ÃÖ´ë°ª ¼¼Æà + public static readonly int STR_MAX = 60; + public static readonly float RANGE_MAX = 3f; + public static readonly float SPEED_MAX = 3f; } diff --git a/Assets/Scripts/Manage/GameManager.cs b/Assets/Scripts/Manage/GameManager.cs index f5978d1..0c22bea 100644 --- a/Assets/Scripts/Manage/GameManager.cs +++ b/Assets/Scripts/Manage/GameManager.cs @@ -6,6 +6,8 @@ using UnityEngine; public class GameManager : UnitySingleton { + + #region Player Data public PlayerInfo MainPlayer { get @@ -13,6 +15,15 @@ public class GameManager : UnitySingleton return PlayerPrefsManager.LoadMainPlayer(); } } + + public int PlayerCount + { + get + { + return _playerData.Count; + } + } + private List _playerData = new(); public void SetPlayerData(List dataList) @@ -27,5 +38,20 @@ public class GameManager : UnitySingleton { return _playerData.Find(arg => arg.Id == id); } + + public PlayerInfo GetPlayerDataByIndex(int idx) + { + if(idx < 0 || idx >= PlayerCount) + { + Debug.LogError("Plyer index out of range!!"); + return null; + } + return _playerData[idx]; + } + public int GetPlayerDataIndex(PlayerInfo info) + { + return _playerData.FindIndex(arg => arg == info); + } + #endregion Player Data } diff --git a/Assets/Scripts/Manage/UIManager.cs b/Assets/Scripts/Manage/UIManager.cs index eebdeb9..eb86f6b 100644 --- a/Assets/Scripts/Manage/UIManager.cs +++ b/Assets/Scripts/Manage/UIManager.cs @@ -1,3 +1,4 @@ +using FirstVillain.EventBus; using FirstVillain.Singleton; using System; using System.Collections; @@ -45,7 +46,11 @@ public class UIManager : UnitySingleton #region Open UI public UIBase OpenUI(E_UI_TYPE type) - { + { + if(_uiStack.Count > 0) + { + _uiStack.Peek().gameObject.SetActive(false); + } if(_loadedUIDict.ContainsKey(type)) { return GenerateUI(_loadedUIDict[type], E_UI_ROOT_TYPE.UI); @@ -114,23 +119,25 @@ public class UIManager : UnitySingleton } #region Close UI - public void CloseUI(UIBase ui) + public UIBase CloseUI() { - switch(ui.UI_ROOT_TYPE) + if (_uiStack.Count > 1) { - case E_UI_ROOT_TYPE.UI: - if(_uiStack.Count > 1) - { - var targetUI = _uiStack.Pop(); - targetUI.CloseAction(); - Destroy(targetUI.gameObject); - } - break; - case E_UI_ROOT_TYPE.System: - _systemUIList.Remove(ui); - Destroy(ui.gameObject); - break; + var targetUI = _uiStack.Pop(); + targetUI.CloseAction(); + Destroy(targetUI.gameObject); } + + var prevUI = _uiStack.Peek(); + prevUI.gameObject.SetActive(true); + return prevUI; + + } + + public void CloseSystemUI(UIBase ui) + { + _systemUIList.Remove(ui); + Destroy(ui.gameObject); } public void CloseLoadingUI() @@ -145,7 +152,6 @@ public class UIManager : UnitySingleton _loadingUI = null; } - public void ReleaseUI() { while(_uiStack.Count > 0) @@ -155,6 +161,8 @@ public class UIManager : UnitySingleton Destroy(ui.gameObject); } + EventBus.Instance.Publish(new EventStartLobby()); + foreach (var systemUI in _systemUIList) { Destroy(systemUI.gameObject); diff --git a/Assets/Scripts/UI/Lobby/UIPanelLobby.cs b/Assets/Scripts/UI/Lobby/UIPanelLobby.cs index e5d8482..6a3eaf1 100644 --- a/Assets/Scripts/UI/Lobby/UIPanelLobby.cs +++ b/Assets/Scripts/UI/Lobby/UIPanelLobby.cs @@ -9,28 +9,62 @@ public class UIPanelLobby : UIBase [SerializeField] private Transform _characterRoot; [SerializeField] private Button _singleStageButton; + [SerializeField] private Button _playerListButton; - + private PlayerInfo _curPlayerInfo; + private GameObject _curPlayerPrefab; public override void Open() { InitButtons(); - var main = AddressableManager.Instance.Spawn(GameManager.Instance.MainPlayer.UIPrefabName, _characterRoot); - main.SetActive(false); - main.ResetTransform(); + UpdatePlayer(); base.Open(); - main.SetActive(true); + + _curPlayerPrefab.SetActive(true); + } + + private void OnEnable() + { + if(_curPlayerInfo != GameManager.Instance.MainPlayer) + { + if (_curPlayerPrefab != null) + { + AddressableManager.Instance.Release(_curPlayerPrefab); + UpdatePlayer(); + _curPlayerPrefab.SetActive(true); + } + } + + } + + private void UpdatePlayer() + { + _curPlayerInfo = GameManager.Instance.MainPlayer; + _curPlayerPrefab = AddressableManager.Instance.Spawn(GameManager.Instance.MainPlayer.UIPrefabName, _characterRoot); + _curPlayerPrefab.SetActive(false); + _curPlayerPrefab.ResetTransform(); } private void InitButtons() { _singleStageButton.AddButtonListener(OnClickSingleStage); + _playerListButton.AddButtonListener(OnClickPlayerList); } + #region OnClick + private void OnClickSingleStage() { SceneLoadManager.Instance.LoadSceneAsync("Stage_Single", UnityEngine.SceneManagement.LoadSceneMode.Single, OnLoadSingleStageComplete); } + + private void OnClickPlayerList() + { + UIManager.Instance.OpenUI(E_UI_TYPE.UIPanelPlayerList); + } + + #endregion OnClick + private void OnLoadSingleStageComplete() { EventBus.Instance.Publish(new EventStartStage(GameManager.Instance.MainPlayer, E_STAGE_TYPE.Single_TimeAttack)); diff --git a/Assets/Scripts/UI/Lobby/UIPanelPlayerList.cs b/Assets/Scripts/UI/Lobby/UIPanelPlayerList.cs index 15a9d51..ac91616 100644 --- a/Assets/Scripts/UI/Lobby/UIPanelPlayerList.cs +++ b/Assets/Scripts/UI/Lobby/UIPanelPlayerList.cs @@ -1,8 +1,119 @@ +using FirstVillain.EventBus; using System.Collections; using System.Collections.Generic; +using TMPro; using UnityEngine; +using UnityEngine.UI; public class UIPanelPlayerList : UIBase { - + [SerializeField] private Transform _playerRoot; + + [SerializeField] private Button _selectButton; + [SerializeField] private Button _prevButton; + [SerializeField] private Button _nextButton; + [SerializeField] private Button _backButton; + [SerializeField] private Button _homeButton; + + [SerializeField] private Slider _strSlider; + [SerializeField] private Slider _rangeSlider; + [SerializeField] private Slider _speedSlider; + + [SerializeField] private TextMeshProUGUI _strText; + [SerializeField] private TextMeshProUGUI _rangeText; + [SerializeField] private TextMeshProUGUI _speedText; + + private PlayerInfo _curPlayerInfo; + private int _curPlayerIdx; + private GameObject _curPlayerPrefab; + + public override void Open() + { + _curPlayerInfo = PlayerPrefsManager.LoadMainPlayer(); + + _curPlayerIdx = GameManager.Instance.GetPlayerDataIndex(_curPlayerInfo); + + _selectButton.AddButtonListener(OnClickSelectPlayer); + _prevButton.AddButtonListener(OnClickPrevButton); + _nextButton.AddButtonListener(OnClickNextButton); + _backButton.AddButtonListener(OnClickBack); + _homeButton.AddButtonListener(OnClickHome); + + UpdateData(); + + base.Open(); + } + + private void UpdateData() + { + LoadPlayerPrefab(); + + _strSlider.value = _curPlayerInfo.STR / (float)Constants.STR_MAX; + _rangeSlider.value = _curPlayerInfo.RANGE / Constants.RANGE_MAX; + _speedSlider.value = _curPlayerInfo.SPEED / Constants.SPEED_MAX; + + _strText.SetText(_curPlayerInfo.STR.ToString()); + _rangeText.SetText(((int)_curPlayerInfo.RANGE * 10).ToString()); + _speedText.SetText(((int)_curPlayerInfo.SPEED * 10).ToString()); + } + + private void LoadPlayerPrefab() + { + if(_curPlayerPrefab != null) + { + AddressableManager.Instance.Release(_curPlayerPrefab); + } + _curPlayerPrefab = AddressableManager.Instance.Spawn(_curPlayerInfo.UIPrefabName, _playerRoot); + _curPlayerPrefab.ResetTransform(); + _curPlayerPrefab.transform.localPosition = Vector3.zero; + } + #region OnClick + private void OnClickPrevButton() + { + if(--_curPlayerIdx < 0) + { + _curPlayerIdx += GameManager.Instance.PlayerCount; + } + + _curPlayerInfo = GameManager.Instance.GetPlayerDataByIndex(_curPlayerIdx); + + UpdateData(); + } + + private void OnClickNextButton() + { + if(++_curPlayerIdx >= GameManager.Instance.PlayerCount) + { + _curPlayerIdx -= GameManager.Instance.PlayerCount; + } + + _curPlayerInfo = GameManager.Instance.GetPlayerDataByIndex(_curPlayerIdx); + + UpdateData(); + } + + private void OnClickSelectPlayer() + { + PlayerPrefsManager.SaveMainPlayer(_curPlayerInfo.Id); + } + + private void OnClickBack() + { + UIManager.Instance.CloseUI(); + } + + private void OnClickHome() + { + UIManager.Instance.ReleaseUI(); + } + #endregion OnClick + + public override void CloseAction() + { + if(_curPlayerPrefab != null) + { + AddressableManager.Instance.Release(_curPlayerPrefab); + } + base.CloseAction(); + } } diff --git a/Assets/Scripts/UI/UIBase.cs b/Assets/Scripts/UI/UIBase.cs index 3975467..3f9ceea 100644 --- a/Assets/Scripts/UI/UIBase.cs +++ b/Assets/Scripts/UI/UIBase.cs @@ -17,7 +17,7 @@ public class UIBase : MonoBehaviour public void Close() { - UIManager.Instance.CloseUI(this); + UIManager.Instance.CloseUI(); } public virtual void CloseAction()