플레이어 리스트 UI 작업 추가, UI시스템 방식 수정

This commit is contained in:
villaingames 2023-10-24 19:12:04 +09:00
parent 909500e74e
commit 4e49ad7124
8 changed files with 493 additions and 25 deletions

View File

@ -32085,6 +32085,7 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
_characterRoot: {fileID: 8607678279704524677} _characterRoot: {fileID: 8607678279704524677}
_singleStageButton: {fileID: 8607678279483521074} _singleStageButton: {fileID: 8607678279483521074}
_playerListButton: {fileID: 8607678279159893190}
--- !u!1 &8607678279519452447 --- !u!1 &8607678279519452447
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -51292,7 +51293,7 @@ MonoBehaviour:
m_OnCullStateChanged: m_OnCullStateChanged:
m_PersistentCalls: m_PersistentCalls:
m_Calls: [] m_Calls: []
m_text: CHARACTER m_text: PLAYER
m_isRightToLeft: 0 m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 50c12c23294124aa48490c44ac65a9e4, type: 2} m_fontAsset: {fileID: 11400000, guid: 50c12c23294124aa48490c44ac65a9e4, type: 2}
m_sharedMaterial: {fileID: 7746803525459343344, guid: 50c12c23294124aa48490c44ac65a9e4, m_sharedMaterial: {fileID: 7746803525459343344, guid: 50c12c23294124aa48490c44ac65a9e4,

View File

@ -19055,6 +19055,128 @@ MonoBehaviour:
m_FillOrigin: 0 m_FillOrigin: 0
m_UseSpriteMesh: 0 m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1 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 --- !u!1 &5859963307509869375
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -20188,7 +20310,8 @@ RectTransform:
m_LocalPosition: {x: 0, y: 0, z: 21} m_LocalPosition: {x: 0, y: 0, z: 21}
m_LocalScale: {x: 300, y: 300, z: 300} m_LocalScale: {x: 300, y: 300, z: 300}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children:
- {fileID: 6206984379070538658}
m_Father: {fileID: 7459603270314721886} m_Father: {fileID: 7459603270314721886}
m_LocalEulerAnglesHint: {x: 8.328, y: 161.727, z: -3.896} m_LocalEulerAnglesHint: {x: 8.328, y: 161.727, z: -3.896}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0.5, y: 0.5}
@ -20988,6 +21111,7 @@ GameObject:
- component: {fileID: 7459603269412839174} - component: {fileID: 7459603269412839174}
- component: {fileID: 7459603269412839168} - component: {fileID: 7459603269412839168}
- component: {fileID: 7459603269412839169} - component: {fileID: 7459603269412839169}
- component: {fileID: 4925477241957967913}
m_Layer: 5 m_Layer: 5
m_Name: Button_Arrow_R m_Name: Button_Arrow_R
m_TagString: Untagged m_TagString: Untagged
@ -21052,6 +21176,50 @@ MonoBehaviour:
m_FillOrigin: 0 m_FillOrigin: 0
m_UseSpriteMesh: 0 m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1 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 --- !u!1 &7459603269426521990
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -23778,6 +23946,7 @@ GameObject:
- component: {fileID: 7459603270130791829} - component: {fileID: 7459603270130791829}
- component: {fileID: 7459603270130791831} - component: {fileID: 7459603270130791831}
- component: {fileID: 7459603270130791828} - component: {fileID: 7459603270130791828}
- component: {fileID: 4540790558316657538}
m_Layer: 5 m_Layer: 5
m_Name: Button_Arrow_L m_Name: Button_Arrow_L
m_TagString: Untagged m_TagString: Untagged
@ -23842,6 +24011,50 @@ MonoBehaviour:
m_FillOrigin: 0 m_FillOrigin: 0
m_UseSpriteMesh: 0 m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1 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 --- !u!1 &7459603270134483779
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -25038,6 +25251,7 @@ GameObject:
- component: {fileID: 7459603270371822157} - component: {fileID: 7459603270371822157}
- component: {fileID: 7459603270371822159} - component: {fileID: 7459603270371822159}
- component: {fileID: 7459603270371822156} - component: {fileID: 7459603270371822156}
- component: {fileID: 8001649805687928187}
m_Layer: 5 m_Layer: 5
m_Name: Button_Home m_Name: Button_Home
m_TagString: Untagged m_TagString: Untagged
@ -25103,6 +25317,50 @@ MonoBehaviour:
m_FillOrigin: 0 m_FillOrigin: 0
m_UseSpriteMesh: 0 m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1 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 --- !u!1 &7459603270376292508
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -26584,6 +26842,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 7459603270933694283} - component: {fileID: 7459603270933694283}
- component: {fileID: 404385109801692332}
m_Layer: 5 m_Layer: 5
m_Name: UIPanelPlayerList m_Name: UIPanelPlayerList
m_TagString: Untagged m_TagString: Untagged
@ -26615,6 +26874,30 @@ RectTransform:
m_AnchoredPosition: {x: 0, y: 0} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5} 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 --- !u!1 &7459603270962932991
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@ -11,4 +11,9 @@ public static class Constants
public static readonly float CAM_TURN_SPEED = 40; public static readonly float CAM_TURN_SPEED = 40;
public static readonly float JUMP_FORCE = 3f; 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;
} }

View File

@ -6,6 +6,8 @@ using UnityEngine;
public class GameManager : UnitySingleton<GameManager> public class GameManager : UnitySingleton<GameManager>
{ {
#region Player Data
public PlayerInfo MainPlayer public PlayerInfo MainPlayer
{ {
get get
@ -13,6 +15,15 @@ public class GameManager : UnitySingleton<GameManager>
return PlayerPrefsManager.LoadMainPlayer(); return PlayerPrefsManager.LoadMainPlayer();
} }
} }
public int PlayerCount
{
get
{
return _playerData.Count;
}
}
private List<PlayerInfo> _playerData = new(); private List<PlayerInfo> _playerData = new();
public void SetPlayerData(List<JPlayerData> dataList) public void SetPlayerData(List<JPlayerData> dataList)
@ -28,4 +39,19 @@ public class GameManager : UnitySingleton<GameManager>
return _playerData.Find(arg => arg.Id == id); 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
} }

View File

@ -1,3 +1,4 @@
using FirstVillain.EventBus;
using FirstVillain.Singleton; using FirstVillain.Singleton;
using System; using System;
using System.Collections; using System.Collections;
@ -46,6 +47,10 @@ public class UIManager : UnitySingleton<UIManager>
#region Open UI #region Open UI
public UIBase OpenUI(E_UI_TYPE type) public UIBase OpenUI(E_UI_TYPE type)
{ {
if(_uiStack.Count > 0)
{
_uiStack.Peek().gameObject.SetActive(false);
}
if(_loadedUIDict.ContainsKey(type)) if(_loadedUIDict.ContainsKey(type))
{ {
return GenerateUI(_loadedUIDict[type], E_UI_ROOT_TYPE.UI); return GenerateUI(_loadedUIDict[type], E_UI_ROOT_TYPE.UI);
@ -114,23 +119,25 @@ public class UIManager : UnitySingleton<UIManager>
} }
#region Close UI #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: var targetUI = _uiStack.Pop();
if(_uiStack.Count > 1) targetUI.CloseAction();
{ Destroy(targetUI.gameObject);
var targetUI = _uiStack.Pop();
targetUI.CloseAction();
Destroy(targetUI.gameObject);
}
break;
case E_UI_ROOT_TYPE.System:
_systemUIList.Remove(ui);
Destroy(ui.gameObject);
break;
} }
var prevUI = _uiStack.Peek();
prevUI.gameObject.SetActive(true);
return prevUI;
}
public void CloseSystemUI(UIBase ui)
{
_systemUIList.Remove(ui);
Destroy(ui.gameObject);
} }
public void CloseLoadingUI() public void CloseLoadingUI()
@ -145,7 +152,6 @@ public class UIManager : UnitySingleton<UIManager>
_loadingUI = null; _loadingUI = null;
} }
public void ReleaseUI() public void ReleaseUI()
{ {
while(_uiStack.Count > 0) while(_uiStack.Count > 0)
@ -155,6 +161,8 @@ public class UIManager : UnitySingleton<UIManager>
Destroy(ui.gameObject); Destroy(ui.gameObject);
} }
EventBus.Instance.Publish(new EventStartLobby());
foreach (var systemUI in _systemUIList) foreach (var systemUI in _systemUIList)
{ {
Destroy(systemUI.gameObject); Destroy(systemUI.gameObject);

View File

@ -9,28 +9,62 @@ public class UIPanelLobby : UIBase
[SerializeField] private Transform _characterRoot; [SerializeField] private Transform _characterRoot;
[SerializeField] private Button _singleStageButton; [SerializeField] private Button _singleStageButton;
[SerializeField] private Button _playerListButton;
private PlayerInfo _curPlayerInfo;
private GameObject _curPlayerPrefab;
public override void Open() public override void Open()
{ {
InitButtons(); InitButtons();
var main = AddressableManager.Instance.Spawn(GameManager.Instance.MainPlayer.UIPrefabName, _characterRoot); UpdatePlayer();
main.SetActive(false);
main.ResetTransform();
base.Open(); 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() private void InitButtons()
{ {
_singleStageButton.AddButtonListener(OnClickSingleStage); _singleStageButton.AddButtonListener(OnClickSingleStage);
_playerListButton.AddButtonListener(OnClickPlayerList);
} }
#region OnClick
private void OnClickSingleStage() private void OnClickSingleStage()
{ {
SceneLoadManager.Instance.LoadSceneAsync("Stage_Single", UnityEngine.SceneManagement.LoadSceneMode.Single, OnLoadSingleStageComplete); 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() private void OnLoadSingleStageComplete()
{ {
EventBus.Instance.Publish(new EventStartStage(GameManager.Instance.MainPlayer, E_STAGE_TYPE.Single_TimeAttack)); EventBus.Instance.Publish(new EventStartStage(GameManager.Instance.MainPlayer, E_STAGE_TYPE.Single_TimeAttack));

View File

@ -1,8 +1,119 @@
using FirstVillain.EventBus;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using TMPro;
using UnityEngine; using UnityEngine;
using UnityEngine.UI;
public class UIPanelPlayerList : UIBase 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();
}
} }

View File

@ -17,7 +17,7 @@ public class UIBase : MonoBehaviour
public void Close() public void Close()
{ {
UIManager.Instance.CloseUI(this); UIManager.Instance.CloseUI();
} }
public virtual void CloseAction() public virtual void CloseAction()