DO-46 [Feat] 턴 전환 애니 추가

This commit is contained in:
Lim0_C 2025-03-24 17:27:12 +09:00
parent 20b170c64c
commit 0ae86bacd6
8 changed files with 1202 additions and 3479 deletions

View File

@ -1,11 +1,26 @@
using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
public class GameUIController : MonoBehaviour
{
[SerializeField] private GameObject retryButton;
[SerializeField] private TMP_Text playerANameText;
[SerializeField] private TMP_Text playerBNameText;
[SerializeField] private Image indicatorA;
[SerializeField] private Image indicatorB;
[SerializeField] private Image profileImageA;
[SerializeField] private Image profileImageB;
[SerializeField] private Sprite[] profileImageSprites; //0. 기본 드래곤 1. 기본 호랑이 2.아이보리 드래곤 3. 아이보리 호랑이
[SerializeField] private Sprite[] indicatorSprites; //0. active 1. inactive
private Sprite _originalSpriteA;
private Sprite _originalSpriteB;
public void OnClickConfirmButton()
{
GameManager.Instance.OnClickConfirmButton();
@ -31,8 +46,67 @@ public class GameUIController : MonoBehaviour
GameManager.Instance.panelManager.OpenSettingsPanel();
}
public void GameOver()
public void InitUI()
{
retryButton.SetActive(true);
if (UserManager.Instance == null) return;
retryButton.SetActive(false);
playerANameText.text = UserManager.Instance.Nickname;
}
public void InitPlayersName(string playerNameA, string playerNameB)
{
playerANameText.text = playerNameA;
playerBNameText.text = playerNameB;
}
public void InitProfileImages(int profileImageIndexA, int profileImageIndexB)
{
profileImageA.sprite = profileImageIndexA == 0 ? profileImageSprites[0] : profileImageSprites[profileImageIndexA];
profileImageB.sprite = profileImageIndexB == 0 ? profileImageSprites[0] : profileImageSprites[profileImageIndexB];
_originalSpriteA = profileImageA.sprite;
_originalSpriteB = profileImageB.sprite;
}
public void SetTurnIndicator(bool isFirstPlayer)
{
if (isFirstPlayer)
{
if (_originalSpriteA == profileImageSprites[0])
{
profileImageA.sprite = profileImageSprites[2];
}
else if (_originalSpriteA == profileImageSprites[1])
{
profileImageA.sprite = profileImageSprites[3];
}
profileImageB.sprite = _originalSpriteB;
indicatorA.sprite = indicatorSprites[0];
indicatorB.sprite = indicatorSprites[1];
profileImageA.transform.DOScale(1.5f, 0.3f).SetEase(Ease.InBack).OnComplete(() =>
{
profileImageA.transform.DOScale(1f, 0.3f).SetEase(Ease.OutBack);
});
}
else
{
if (_originalSpriteB == profileImageSprites[0])
{
profileImageB.sprite = profileImageSprites[2];
}
else if (_originalSpriteB == profileImageSprites[1])
{
profileImageB.sprite = profileImageSprites[3];
}
profileImageA.sprite = _originalSpriteA;
indicatorA.sprite = indicatorSprites[1];
indicatorB.sprite = indicatorSprites[0];
profileImageB.transform.DOScale(1.5f, 0.3f).SetEase(Ease.InBack).OnComplete(() =>
{
profileImageB.transform.DOScale(1f, 0.3f).SetEase(Ease.OutBack);
});
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 2fe8a02a96ca80b4493a6885b1edffc2
guid: b8e3d5d18e544774eb144db419a327d2
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1457,7 +1457,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
m_IsActive: 1
--- !u!224 &405965270916774547
RectTransform:
m_ObjectHideFlags: 0
@ -1713,7 +1713,7 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: "\uD638\uB7AD\uC774"
m_text: tester
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 85a19688db53c77469fc4406b01045da, type: 2}
m_sharedMaterial: {fileID: -2477908578676791210, guid: 85a19688db53c77469fc4406b01045da, type: 2}
@ -1799,7 +1799,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &8172929902404983356
RectTransform:
m_ObjectHideFlags: 0

View File

@ -120,7 +120,19 @@ MonoBehaviour:
m_TargetGraphic: {fileID: 3806122116930050020}
m_OnClick:
m_PersistentCalls:
m_Calls: []
m_Calls:
- m_Target: {fileID: 3933575647777291622}
m_TargetAssemblyTypeName: GameUIController, Assembly-CSharp
m_MethodName: OnClickSurrenderButton
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!1 &626368541760032086
GameObject:
m_ObjectHideFlags: 0
@ -395,6 +407,139 @@ MonoBehaviour:
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &1812579611192138725
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3685916492953640732}
- component: {fileID: 2837002930647588383}
- component: {fileID: 7520396528988244836}
- component: {fileID: 4581847833490342559}
m_Layer: 5
m_Name: Settings Button
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3685916492953640732
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1812579611192138725}
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:
- {fileID: 2490009981694473494}
m_Father: {fileID: 4044003808430543235}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -50, y: -85}
m_SizeDelta: {x: 238, y: 150}
m_Pivot: {x: 1, y: 1}
--- !u!222 &2837002930647588383
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1812579611192138725}
m_CullTransparentMesh: 1
--- !u!114 &7520396528988244836
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1812579611192138725}
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: 0.9607844, b: 0.8980393, 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: 05a670e614d7817429ee256ceb7efbe6, type: 3}
m_Type: 1
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!114 &4581847833490342559
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1812579611192138725}
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: 2
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: 21300000, guid: 1cc2af2fc6476554ca42fb2ddfd7727f, type: 3}
m_PressedSprite: {fileID: 21300000, guid: 1cc2af2fc6476554ca42fb2ddfd7727f, type: 3}
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: 7520396528988244836}
m_OnClick:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 3933575647777291622}
m_TargetAssemblyTypeName: GameUIController, Assembly-CSharp
m_MethodName: OnClickSettingsButton
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!1 &2180157736785062510
GameObject:
m_ObjectHideFlags: 0
@ -427,6 +572,7 @@ RectTransform:
m_Children:
- {fileID: 4020956126151567600}
- {fileID: 3928015243027423495}
- {fileID: 3685916492953640732}
- {fileID: 5290633878409985}
m_Father: {fileID: 2843270827267453358}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -507,9 +653,9 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 1}
m_AnchorMax: {x: 0.5, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: -125}
m_SizeDelta: {x: 250, y: 250}
m_Pivot: {x: 0.5, y: 1}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3001533735177909600
CanvasRenderer:
m_ObjectHideFlags: 0
@ -643,7 +789,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &3928015243027423495
RectTransform:
m_ObjectHideFlags: 0
@ -659,11 +805,11 @@ RectTransform:
- {fileID: 5364152893080087698}
m_Father: {fileID: 4044003808430543235}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -50, y: -85}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 50, y: -85}
m_SizeDelta: {x: 238, y: 150}
m_Pivot: {x: 1, y: 1}
m_Pivot: {x: 0, y: 1}
--- !u!222 &3058652260737614200
CanvasRenderer:
m_ObjectHideFlags: 0
@ -1102,6 +1248,140 @@ MonoBehaviour:
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &3803482992194188727
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2490009981694473494}
- component: {fileID: 5753191097148567634}
- component: {fileID: 7418401814114797352}
m_Layer: 5
m_Name: Text (TMP)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2490009981694473494
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3803482992194188727}
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: 3685916492953640732}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 9.0771}
m_SizeDelta: {x: 0, y: -18.1542}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5753191097148567634
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3803482992194188727}
m_CullTransparentMesh: 1
--- !u!114 &7418401814114797352
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3803482992194188727}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: "\uC124\uC815"
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 85a19688db53c77469fc4406b01045da, type: 2}
m_sharedMaterial: {fileID: -2477908578676791210, guid: 85a19688db53c77469fc4406b01045da, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4284115536
m_fontColor: {r: 0.3137255, g: 0.4156863, b: 0.3529412, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 45
m_fontSizeBase: 45
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 0
m_fontSizeMax: 0
m_fontStyle: 1
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 0
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 0
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &3856590192762510114
GameObject:
m_ObjectHideFlags: 0
@ -1611,9 +1891,9 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 1}
m_AnchorMax: {x: 0.5, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: -125}
m_SizeDelta: {x: 250, y: 250}
m_Pivot: {x: 0.5, y: 1}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1810525227364227116
CanvasRenderer:
m_ObjectHideFlags: 0
@ -2087,6 +2367,21 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 35a536dce57360441898a57e5d5a1335, type: 3}
m_Name:
m_EditorClassIdentifier:
retryButton: {fileID: 2903228850155334346}
playerANameText: {fileID: 4888719462249568075}
playerBNameText: {fileID: 5649645114775233136}
indicatorA: {fileID: 822440635660578859}
indicatorB: {fileID: 8824651814675414615}
profileImageA: {fileID: 8274101518303565689}
profileImageB: {fileID: 1516328599079970136}
profileImageSprites:
- {fileID: 21300000, guid: 2d325c545f7c9144cb37a45e93e5ddb9, type: 3}
- {fileID: 21300000, guid: 59492a1d9c2719641bd0d4d53988c9b4, type: 3}
- {fileID: 21300000, guid: 0ec0f74f1a2889d418680a98b21a7095, type: 3}
- {fileID: 21300000, guid: 81e6604d6664acf4cab1ff13043e5b54, type: 3}
indicatorSprites:
- {fileID: 21300000, guid: 91965db86e05b144f840b523e83d3816, type: 3}
- {fileID: 21300000, guid: 8379c97a1509fbc42abb3da34d2e647c, type: 3}
--- !u!225 &5999196603484244259
CanvasGroup:
m_ObjectHideFlags: 0

View File

@ -353,7 +353,7 @@ Camera:
far clip plane: 1000
field of view: 60
orthographic: 1
orthographic size: 14
orthographic size: 13.333333
m_Depth: -1
m_CullingMask:
serializedVersion: 2

View File

@ -228,18 +228,23 @@ public class GameLogic : MonoBehaviour
};
}
//TODO: 기보 매니저에게 플레이어 닉네임 넘겨주기, 프로필정보도 넘겨줘야 합니다.
ReplayManager.Instance.InitReplayData("PlayerA","nicknameB");
switch (gameType)
{
case Enums.GameType.SinglePlay:
firstPlayerState = new PlayerState(true);
secondPlayerState = new AIState();
//유저 이름 사진 초기화
GameManager.Instance.InitPlayersName(UserManager.Instance.Nickname, "AIPlayer");
GameManager.Instance.InitProfileImages(UserManager.Instance.imageIndex, 1);
ReplayManager.Instance.InitReplayData(UserManager.Instance.Nickname,"PlayerAI");
SetState(firstPlayerState);
break;
case Enums.GameType.MultiPlay:
//TODO: 멀티 구현 필요
ReplayManager.Instance.InitReplayData("PlayerA","nicknameB");
break;
case Enums.GameType.Replay:
//TODO: 리플레이 구현
@ -268,6 +273,8 @@ public class GameLogic : MonoBehaviour
_currentPlayerState?.OnExit(this);
_currentPlayerState = state;
_currentPlayerState?.OnEnter(this);
//턴 표시
GameManager.Instance.SetTurnIndicator(_currentPlayerState == firstPlayerState);
}
//스톤의 상태변경 명령함수

View File

@ -12,6 +12,7 @@ public class GameManager : Singleton<GameManager>
private GameLogic _gameLogic;
private StoneController _stoneController;
private GameObject _omokBoardImage;
private GameUIController _gameUIController;
[SerializeField] private GameObject panelManagerPrefab;
[SerializeField] private GameObject audioManagerPrefab;
@ -24,19 +25,6 @@ public class GameManager : Singleton<GameManager>
base.Awake();
InitPanels();
}
private void Start()
{
//게임 씬에서 확인하기 위한 임시 코드
_gameType = Enums.GameType.SinglePlay;
//게임 씬에서 확인하기 위한 임시 코드
// _canvas = canvas.GetComponent<Canvas>();
// _stoneController = GameObject.FindObjectOfType<StoneController>();
// _stoneController.InitStones();
// var fioTimer = FindObjectOfType<FioTimer>();
// _gameLogic = new GameLogic(_stoneController, _gameType, fioTimer);
}
private void InitPanels()
{
@ -76,15 +64,13 @@ public class GameManager : Singleton<GameManager>
{
if (scene.name == "Game")
{
if (_gameType == Enums.GameType.Replay)
{
//TODO: 리플레이를 위한 초기화
}
_stoneController = GameObject.FindObjectOfType<StoneController>();
_stoneController.InitStones();
var fioTimer = FindObjectOfType<FioTimer>();
_omokBoardImage = GameObject.FindObjectOfType<SpriteRenderer>().gameObject;
_gameUIController = GameObject.FindObjectOfType<GameUIController>();
_gameLogic = new GameLogic(_stoneController, _gameType, fioTimer);
}
InitPanels();
}
@ -95,5 +81,22 @@ public class GameManager : Singleton<GameManager>
_stoneController.InitStones();
_gameLogic.SetState(_gameLogic.firstPlayerState);
}
//유저 이름 Game UI에 초기화
public void InitPlayersName(string playerNameA, string playerNameB)
{
if (_gameUIController == null) return;
_gameUIController.InitPlayersName(playerNameA, playerNameB);
}
//유저 프로필 이미지 Game UI에 초기화
public void InitProfileImages(int profileImageIndexA, int profileImageIndexB)
{
if (_gameUIController == null) return;
_gameUIController.InitProfileImages(profileImageIndexA, profileImageIndexB);
}
public void SetTurnIndicator(bool isFirstPlayer)
{
if (_gameUIController == null) return;
_gameUIController.SetTurnIndicator(isFirstPlayer);
}
}