feat: 캐릭터 생성 화면 로직 추가 및 닉네임 서버 저장하도록 적용
This commit is contained in:
@@ -403,11 +403,13 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: ce1a1854c76bcd140a71eb36d9308221, type: 3}
|
m_Script: {fileID: 11500000, guid: ce1a1854c76bcd140a71eb36d9308221, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
cancelButton: {fileID: 0}
|
cancelButton: {fileID: 5209868250622144582}
|
||||||
|
confirmButton: {fileID: 3290386423334957786}
|
||||||
createButton: {fileID: 1887714318721360375}
|
createButton: {fileID: 1887714318721360375}
|
||||||
playerDatas: []
|
playerDatas: []
|
||||||
heartDatas: []
|
|
||||||
characterCreateUI_Modal: {fileID: 7298901665149865196}
|
characterCreateUI_Modal: {fileID: 7298901665149865196}
|
||||||
|
blackCat_Spotlight: {fileID: 6897867871924581457}
|
||||||
|
whiteCat_Spotlight: {fileID: 6223168446447065192}
|
||||||
--- !u!114 &77879358058366330
|
--- !u!114 &77879358058366330
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -578,13 +580,14 @@ RectTransform:
|
|||||||
m_ConstrainProportionsScale: 1
|
m_ConstrainProportionsScale: 1
|
||||||
m_Children:
|
m_Children:
|
||||||
- {fileID: 4905188089100626232}
|
- {fileID: 4905188089100626232}
|
||||||
|
- {fileID: 3118627612192072696}
|
||||||
- {fileID: 1874868407260678613}
|
- {fileID: 1874868407260678613}
|
||||||
m_Father: {fileID: 6058810809619323447}
|
m_Father: {fileID: 6058810809619323447}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||||
m_AnchoredPosition: {x: -300, y: 100}
|
m_AnchoredPosition: {x: -300, y: 100}
|
||||||
m_SizeDelta: {x: 120, y: 120}
|
m_SizeDelta: {x: 150, y: 129}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!222 &6504336163150260281
|
--- !u!222 &6504336163150260281
|
||||||
CanvasRenderer:
|
CanvasRenderer:
|
||||||
@@ -1568,6 +1571,81 @@ MonoBehaviour:
|
|||||||
m_hasFontAssetChanged: 0
|
m_hasFontAssetChanged: 0
|
||||||
m_baseMaterial: {fileID: 0}
|
m_baseMaterial: {fileID: 0}
|
||||||
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
--- !u!1 &6223168446447065192
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 3118627612192072696}
|
||||||
|
- component: {fileID: 3281333180785644978}
|
||||||
|
- component: {fileID: 901079330762090231}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Spotlight
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 0
|
||||||
|
--- !u!224 &3118627612192072696
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6223168446447065192}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 289130454474221960}
|
||||||
|
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: 10, y: 10}
|
||||||
|
m_SizeDelta: {x: 200, y: 200}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &3281333180785644978
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6223168446447065192}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &901079330762090231
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6223168446447065192}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_Sprite: {fileID: 21300000, guid: d29e6f6bbff30554faab081b5b2c0aa2, type: 3}
|
||||||
|
m_Type: 0
|
||||||
|
m_PreserveAspect: 0
|
||||||
|
m_FillCenter: 1
|
||||||
|
m_FillMethod: 4
|
||||||
|
m_FillAmount: 1
|
||||||
|
m_FillClockwise: 1
|
||||||
|
m_FillOrigin: 0
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
m_PixelsPerUnitMultiplier: 1
|
||||||
--- !u!1 &6408180601660019162
|
--- !u!1 &6408180601660019162
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -1836,6 +1914,81 @@ MonoBehaviour:
|
|||||||
m_hasFontAssetChanged: 0
|
m_hasFontAssetChanged: 0
|
||||||
m_baseMaterial: {fileID: 0}
|
m_baseMaterial: {fileID: 0}
|
||||||
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
--- !u!1 &6897867871924581457
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 7114058005112719301}
|
||||||
|
- component: {fileID: 6647985554066899462}
|
||||||
|
- component: {fileID: 4444964193948630461}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Spotlight
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 0
|
||||||
|
--- !u!224 &7114058005112719301
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6897867871924581457}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 4370234102771175042}
|
||||||
|
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: 10, y: 10}
|
||||||
|
m_SizeDelta: {x: 200, y: 200}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &6647985554066899462
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6897867871924581457}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &4444964193948630461
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6897867871924581457}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_Sprite: {fileID: 21300000, guid: d29e6f6bbff30554faab081b5b2c0aa2, type: 3}
|
||||||
|
m_Type: 0
|
||||||
|
m_PreserveAspect: 0
|
||||||
|
m_FillCenter: 1
|
||||||
|
m_FillMethod: 4
|
||||||
|
m_FillAmount: 1
|
||||||
|
m_FillClockwise: 1
|
||||||
|
m_FillOrigin: 0
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
m_PixelsPerUnitMultiplier: 1
|
||||||
--- !u!1 &7298901665149865196
|
--- !u!1 &7298901665149865196
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -1904,13 +2057,14 @@ RectTransform:
|
|||||||
m_ConstrainProportionsScale: 1
|
m_ConstrainProportionsScale: 1
|
||||||
m_Children:
|
m_Children:
|
||||||
- {fileID: 308157984128226261}
|
- {fileID: 308157984128226261}
|
||||||
|
- {fileID: 7114058005112719301}
|
||||||
- {fileID: 282081524326203258}
|
- {fileID: 282081524326203258}
|
||||||
m_Father: {fileID: 6058810809619323447}
|
m_Father: {fileID: 6058810809619323447}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||||
m_AnchoredPosition: {x: 300, y: 100}
|
m_AnchoredPosition: {x: 300, y: 100}
|
||||||
m_SizeDelta: {x: 120, y: 129}
|
m_SizeDelta: {x: 150, y: 129}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!222 &8081481979491666651
|
--- !u!222 &8081481979491666651
|
||||||
CanvasRenderer:
|
CanvasRenderer:
|
||||||
@@ -2256,7 +2410,7 @@ GameObject:
|
|||||||
- component: {fileID: 7182517676015527575}
|
- component: {fileID: 7182517676015527575}
|
||||||
- component: {fileID: 3290386423334957786}
|
- component: {fileID: 3290386423334957786}
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: Confirm Button (1)
|
m_Name: Confirm Button
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
|
|||||||
@@ -9,20 +9,23 @@ namespace TON
|
|||||||
{
|
{
|
||||||
public class CharaterCreateUI : UIBase
|
public class CharaterCreateUI : UIBase
|
||||||
{
|
{
|
||||||
[SerializeField] private Button cancelButton; // Create 버튼 참조
|
[SerializeField] private Button cancelButton; // cancel 버튼 참조
|
||||||
|
[SerializeField] private Button confirmButton; // cancel 버튼 참조
|
||||||
[SerializeField] private Button createButton; // Create 버튼 참조
|
[SerializeField] private Button createButton; // Create 버튼 참조
|
||||||
[SerializeField] private List<PlayerData> playerDatas;
|
[SerializeField] private List<PlayerData> playerDatas;
|
||||||
[SerializeField] private List<HeartData> heartDatas;
|
// [SerializeField] private List<HeartData> heartDatas;
|
||||||
|
|
||||||
|
|
||||||
public GameObject characterCreateUI_Modal;
|
public GameObject characterCreateUI_Modal;
|
||||||
|
public GameObject blackCat_Spotlight;
|
||||||
|
public GameObject whiteCat_Spotlight;
|
||||||
|
|
||||||
private string selectedCharacter; // 선택한 캐릭터의 타입 저장 (예: "MaleCat", "FemaleCat")
|
private string selectedCharacter; // 선택한 캐릭터의 타입 저장 (예: "MaleCat", "FemaleCat")
|
||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
playerDatas = PlayerDataManager.Singleton.playersData;
|
playerDatas = PlayerDataManager.Singleton.playersData;
|
||||||
heartDatas = HeartDataManager.Singleton.heartDatas;
|
// heartDatas = HeartDataManager.Singleton.heartDatas;
|
||||||
|
|
||||||
// 처음에는 버튼을 비활성화
|
// 처음에는 버튼을 비활성화
|
||||||
createButton.interactable = false;
|
createButton.interactable = false;
|
||||||
@@ -33,6 +36,17 @@ namespace TON
|
|||||||
selectedCharacter = characterType;
|
selectedCharacter = characterType;
|
||||||
createButton.interactable = true; // 캐릭터가 선택되면 버튼 활성화
|
createButton.interactable = true; // 캐릭터가 선택되면 버튼 활성화
|
||||||
|
|
||||||
|
switch (characterType)
|
||||||
|
{
|
||||||
|
case "BlackCat":
|
||||||
|
blackCat_Spotlight.SetActive(true);
|
||||||
|
whiteCat_Spotlight.SetActive(false);
|
||||||
|
break;
|
||||||
|
case "WhiteCat":
|
||||||
|
blackCat_Spotlight.SetActive(false);
|
||||||
|
whiteCat_Spotlight.SetActive(true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnClickCreateButton()
|
public void OnClickCreateButton()
|
||||||
@@ -53,22 +67,49 @@ namespace TON
|
|||||||
public void OnClickConfirmButton()
|
public void OnClickConfirmButton()
|
||||||
{
|
{
|
||||||
TMP_InputField characterName = characterCreateUI_Modal.GetComponentInChildren<TMP_InputField>();
|
TMP_InputField characterName = characterCreateUI_Modal.GetComponentInChildren<TMP_InputField>();
|
||||||
Debug.Log("characterName" + characterName.text);
|
string nickname = characterName.text.Trim();
|
||||||
// 생성한 캐릭터를 저장한다
|
|
||||||
PlayerData player = new PlayerData(playerDatas.Count, selectedCharacter, characterName.text);
|
|
||||||
playerDatas.Add(player);
|
|
||||||
Assert.IsTrue(JSONLoader.SaveUpdatedJsonToPersistentData(playerDatas, "player"));
|
|
||||||
|
|
||||||
PlayerDataManager.Singleton.SetCurrentUserData();
|
// 입력 값 검증
|
||||||
|
if (string.IsNullOrEmpty(nickname))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// 하트 시스템을 생성한다
|
// 캐릭터 생성 및 취소 버튼을 비활성화 처리
|
||||||
HeartDataManager.Singleton.CreateNewHeartSystem(playerDatas.Count);
|
cancelButton.interactable = false;
|
||||||
HeartDataManager.Singleton.SetCurrentUserHeart();
|
confirmButton.interactable = false;
|
||||||
|
|
||||||
// 씬 변경
|
// 서버에 닉네임을 추가로 업데이트 한다.
|
||||||
UIManager.Hide<CharaterCreateUI>(UIList.CharaterCreateUI);
|
BackendManager.Singleton.ChangeNickname(nickname, (success, message) =>
|
||||||
|
{
|
||||||
|
// UI 업데이트 (메인 스레드에서 실행)
|
||||||
|
UnityMainThreadDispatcher.Instance().Enqueue(() =>
|
||||||
|
{
|
||||||
|
if (success)
|
||||||
|
{
|
||||||
|
// 생성한 캐릭터를 저장한다
|
||||||
|
PlayerData player = new PlayerData(playerDatas.Count, selectedCharacter, nickname);
|
||||||
|
playerDatas.Add(player);
|
||||||
|
Assert.IsTrue(JSONLoader.SaveUpdatedJsonToPersistentData(playerDatas, "player"));
|
||||||
|
|
||||||
|
PlayerDataManager.Singleton.SetCurrentUserData();
|
||||||
|
|
||||||
|
// 하트 시스템을 생성한다
|
||||||
|
HeartDataManager.Singleton.CreateNewHeartSystem(playerDatas.Count);
|
||||||
|
HeartDataManager.Singleton.SetCurrentUserHeart();
|
||||||
|
|
||||||
|
// 씬 변경
|
||||||
|
UIManager.Hide<CharaterCreateUI>(UIList.CharaterCreateUI);
|
||||||
|
|
||||||
|
Main.Singleton?.ChangeScene(SceneType.Lobby);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.LogError("캐릭터 닉네임 저장 실패");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
Main.Singleton?.ChangeScene(SceneType.Lobby);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnClickCancelButton()
|
public void OnClickCancelButton()
|
||||||
|
|||||||
Reference in New Issue
Block a user