DEG-172-일상UI-색상변경-던전UI-눌림표시 #58

Merged
heain0122 merged 3 commits from DEG-172-일상UI-색상변경-던전UI-눌림표시 into main 2025-05-14 07:43:40 +00:00
14 changed files with 81 additions and 21 deletions

View File

@ -61,6 +61,9 @@ public class PlayerController : CharacterBase, IObserver<GameObject>
public CharacterController CharacterController => _characterController;
public bool IsBattle => _isBattle;
public Transform DashEffectAnchor => dashEffectAnchor;
[Header("대시, 어택 터치 연출용")]
[SerializeField] private DungeonPanelController dungeonPanelController;
private void Awake()
{
@ -114,6 +117,7 @@ public class PlayerController : CharacterBase, IObserver<GameObject>
// 대시 우선 입력 처리
if (Input.GetKeyDown(KeyCode.Space))
{
dungeonPanelController.DashTouchMotion();
StartDashAction();
return;
}
@ -122,6 +126,7 @@ public class PlayerController : CharacterBase, IObserver<GameObject>
if (Input.GetKeyDown(KeyCode.X) && (_currentAction == null || !_currentAction.IsActive)
&& (CurrentState != PlayerState.Win && CurrentState != PlayerState.Dead))
{
dungeonPanelController.AttackTouchMotion();
GameManager.Instance.PlayPlayerAttackSound();
StartAttackAction();
}

View File

@ -11,6 +11,11 @@ public class DungeonPanelController : MonoBehaviour
private int _countHealth = 0;
private int visibleHeartCount = 3; // 강화 레벨로 설정됨
//PC 키보드 입력 시 버튼 색상 변경
[SerializeField] private GameObject dashPressedImage;
[SerializeField] private GameObject attackPressedImage;
private float pressedTime = .1f;
private void Start()
{
int level = UpgradeManager.Instance.upgradeStat.CurrentUpgradeLevel(StatType.Heart); // 1~3
@ -50,4 +55,36 @@ public class DungeonPanelController : MonoBehaviour
{
yield return new WaitForSeconds(1.0f);
}
#region PC입력
public void DashTouchMotion()
{
StopCoroutine(DashButtonColorChange());
StartCoroutine(DashButtonColorChange());
}
public void AttackTouchMotion()
{
StopCoroutine(AttackButtonColorChange());
StartCoroutine(AttackButtonColorChange());
}
private IEnumerator DashButtonColorChange()
{
dashPressedImage.SetActive(true);
yield return new WaitForSeconds(pressedTime);
dashPressedImage.SetActive(false);
}
private IEnumerator AttackButtonColorChange()
{
attackPressedImage.SetActive(true);
yield return new WaitForSeconds(pressedTime);
attackPressedImage.SetActive(false);
}
#endregion
}

BIN
Assets/KSH/ReDungeon.unity (Stored with Git LFS)

Binary file not shown.

BIN
Assets/LIN/Prefabs/Attack Button Image.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 8822dc0c2e8b5bc498036a19194f8827
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/LIN/Prefabs/Dash Button Image.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 76f779210ea250641b4559dfc6d379b5
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/LIN/ReDungeon UI Copy.unity (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: ce2ba637dd19c434fa2eb509c2ad4270
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/LIN/ReHousing Loding Anim.unity (Stored with Git LFS)

Binary file not shown.

View File

@ -16,6 +16,7 @@ public class InteractionController : MonoBehaviour
private void Start()
{
PlayerStats.Instance.OnWorked -= SuddenAfterWorkEventHappen;
Review

여기서 SuddenAfterWorkEventHappen -= 하는 이유가 있을까요? 중복 이벤트 할당때문인가용?

여기서 SuddenAfterWorkEventHappen -= 하는 이유가 있을까요? 중복 이벤트 할당때문인가용?
Review

아 이거 때문에 null 오류가 발생한건가요? 이전 이벤트를 참조해서..인가요?

아 이거 때문에 null 오류가 발생한건가요? 이전 이벤트를 참조해서..인가요?
Review

씬이 전환되면서 InteractionController 의 Start가 한번 더 실행되고 OnWorked 에 2개 이상의 이벤트가 구독 돼서 SuddenAfterWorkEventHappen를 두 번 호출하려고 했던 것 같습니다.
그리고 첫번째 Start에서 구독한 SuddenAfterWorkEventHappen는 씬 전환 전에 있던 canvas의 sudden event panel을 참조하고 있어서 null에러가 났던 것 같습니다.
19번째 줄로 OnWorked 에 남아있는 구독을 모두 해제하고 20번째 줄에서 새로 등록하고 있습니다.

씬이 전환되면서 InteractionController 의 Start가 한번 더 실행되고 OnWorked 에 2개 이상의 이벤트가 구독 돼서 SuddenAfterWorkEventHappen를 두 번 호출하려고 했던 것 같습니다. 그리고 첫번째 Start에서 구독한 SuddenAfterWorkEventHappen는 씬 전환 전에 있던 canvas의 sudden event panel을 참조하고 있어서 null에러가 났던 것 같습니다. 19번째 줄로 OnWorked 에 남아있는 구독을 모두 해제하고 20번째 줄에서 새로 등록하고 있습니다.
Review

아하..! 설명 감사합니다 오류는 구독 문제였군요
고생하셨습니다~!

아하..! 설명 감사합니다 오류는 구독 문제였군요 고생하셨습니다~!
PlayerStats.Instance.OnWorked += SuddenAfterWorkEventHappen;
PlayerStats.Instance.SetInteractionPanelController(interactionAnimationPanelController);
}

View File

@ -31,19 +31,6 @@ public class HousingCanvasController : MonoBehaviour
interactionButton.SetActive(false);
suddenPanel.SetActive(false);
}
/// <summary>
/// 씬전환 로딩 패널 테스트용 코드.던전에서도 씬전환 할 때 해당 코드 사용하시면 됩니다.
/// </summary>
private void Update()
{
if (Input.GetKeyDown(KeyCode.A))
{
var _switchingPanel = Instantiate(switchingPanel,this.transform);
switchingPanelController = _switchingPanel.GetComponent<SwitchingPanelController>();
switchingPanelController.FadeAndSceneLoad("ReDungeon");
}
}
#region NPC

BIN
Assets/Prefabs/ReDungeon/Canvas.prefab (Stored with Git LFS)

Binary file not shown.

BIN
Assets/Prefabs/ReHousing/Canvas.prefab (Stored with Git LFS)

Binary file not shown.