Merge branch 'main' into DO-84-버튼들-바인딩-추가

This commit is contained in:
Lim0_C 2025-03-28 18:15:23 +09:00
commit 47acdcbda7
35 changed files with 300 additions and 6 deletions

View File

@ -5,9 +5,11 @@ using TMPro;
using UnityEngine; using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;
using DG.Tweening; using DG.Tweening;
using UnityEngine.SceneManagement;
public class GameUIController : MonoBehaviour public class GameUIController : MonoBehaviour
{ {
[SerializeField] private Button exitButton;
[SerializeField] private GameObject retryButton; [SerializeField] private GameObject retryButton;
[SerializeField] private TMP_Text playerANameText; [SerializeField] private TMP_Text playerANameText;
[SerializeField] private TMP_Text playerBNameText; [SerializeField] private TMP_Text playerBNameText;
@ -31,6 +33,11 @@ public class GameUIController : MonoBehaviour
private void Start() private void Start()
{ {
_multiplayManager = GameManager.Instance.GetMultiplayManager(); _multiplayManager = GameManager.Instance.GetMultiplayManager();
if (exitButton != null)
{
exitButton.onClick.AddListener(OnClickExitButton);
}
} }
public void OnClickConfirmButton() public void OnClickConfirmButton()
@ -38,6 +45,12 @@ public class GameUIController : MonoBehaviour
GameManager.Instance.OnClickConfirmButton(); GameManager.Instance.OnClickConfirmButton();
} }
public void OnClickExitButton()
{
// "Main" 씬으로 이동
SceneManager.LoadScene("Main");
}
public void OnClickSurrenderButton() public void OnClickSurrenderButton()
{ {
if (GameManager.Instance.CheckIsSinglePlay()) if (GameManager.Instance.CheckIsSinglePlay())

View File

@ -608,7 +608,7 @@ MonoBehaviour:
m_Calls: m_Calls:
- m_Target: {fileID: 3933575647777291622} - m_Target: {fileID: 3933575647777291622}
m_TargetAssemblyTypeName: GameUIController, Assembly-CSharp m_TargetAssemblyTypeName: GameUIController, Assembly-CSharp
m_MethodName: m_MethodName: OnClickExitButton
m_Mode: 1 m_Mode: 1
m_Arguments: m_Arguments:
m_ObjectArgument: {fileID: 0} m_ObjectArgument: {fileID: 0}
@ -2497,7 +2497,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 35a536dce57360441898a57e5d5a1335, type: 3} m_Script: {fileID: 11500000, guid: 35a536dce57360441898a57e5d5a1335, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
retryButton: {fileID: 0} exitButton: {fileID: 2183639868091494604}
playerANameText: {fileID: 4888719462249568075} playerANameText: {fileID: 4888719462249568075}
playerBNameText: {fileID: 5649645114775233136} playerBNameText: {fileID: 5649645114775233136}
indicatorA: {fileID: 822440635660578859} indicatorA: {fileID: 822440635660578859}

Binary file not shown.

View File

@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 8b6eda2c005124d48a7b862a955c2ac1
AudioImporter:
externalObjects: {}
serializedVersion: 7
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: d946cc47f6d6a8348ad0c8bdf8dc0afe
AudioImporter:
externalObjects: {}
serializedVersion: 7
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 6b8dc6e53098cf8479a556c57166c0dc
AudioImporter:
externalObjects: {}
serializedVersion: 7
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 314c364bf0413db4e871e937f6065d9c
AudioImporter:
externalObjects: {}
serializedVersion: 7
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 4d09a9fde068d764d96f25c744b808e6
AudioImporter:
externalObjects: {}
serializedVersion: 7
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: a0eb62de2ee82f44b9f56bc99bc49cf4
AudioImporter:
externalObjects: {}
serializedVersion: 7
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 602218e89f800b5409e1db0adbe3b7e9
AudioImporter:
externalObjects: {}
serializedVersion: 7
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: a1cd5f8e7c3c90b47bf7d39de60e83dd
AudioImporter:
externalObjects: {}
serializedVersion: 7
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 404172c1dace08449b9ba215dd1e4e7a
AudioImporter:
externalObjects: {}
serializedVersion: 7
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: ffa674672ea5fdd438dc98a27b2394b7
AudioImporter:
externalObjects: {}
serializedVersion: 7
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 1613a4bf934e4d043b4e50b1b74c16b5 guid: 767120737a3407142b97ca108f21d1d1
AudioImporter: AudioImporter:
externalObjects: {} externalObjects: {}
serializedVersion: 7 serializedVersion: 7

View File

@ -121,7 +121,6 @@ public class AudioManager : Singleton<AudioManager>
PlayBGM(); PlayBGM();
} }
// 클릭 사운드(SFX) 재생
public void PlayClickSound() public void PlayClickSound()
{ {
if (isPlaySFX && sfxAudioSource != null) if (isPlaySFX && sfxAudioSource != null)
@ -130,7 +129,6 @@ public class AudioManager : Singleton<AudioManager>
} }
} }
// 닫기 사운드(SFX) 재생
public void PlayCloseSound() public void PlayCloseSound()
{ {
if (isPlaySFX && sfxAudioSource != null) if (isPlaySFX && sfxAudioSource != null)
@ -191,7 +189,40 @@ public class AudioManager : Singleton<AudioManager>
{ {
if (isPlaySFX && sfxAudioSource!=null) if (isPlaySFX && sfxAudioSource!=null)
{ {
sfxAudioSource.PlayOneShot(GetAudioClip("StoneSound"), sfxVolume); int randomIndex = UnityEngine.Random.Range(1, 8);
sfxAudioSource.PlayOneShot(GetAudioClip("StoneSound"+randomIndex), sfxVolume);
}
}
public void PlayRatingSound()
{
if (isPlaySFX && sfxAudioSource!=null)
{
sfxAudioSource.PlayOneShot(GetAudioClip("RatingSound"), sfxVolume);
}
}
public void PlayRatingUpSound()
{
if (isPlaySFX && sfxAudioSource!=null)
{
sfxAudioSource.PlayOneShot(GetAudioClip("RatingUpSound"), sfxVolume);
}
}
public void PlayRatingDownSound()
{
if (isPlaySFX && sfxAudioSource!=null)
{
sfxAudioSource.PlayOneShot(GetAudioClip("RatingDownSound"), sfxVolume);
}
}
public void PlayErrorSound()
{
if (isPlaySFX && sfxAudioSource!=null)
{
sfxAudioSource.PlayOneShot(GetAudioClip("ErrorSound"), sfxVolume);
} }
} }
} }

View File

@ -57,6 +57,8 @@ public class GameManager : Singleton<GameManager>
{ {
if (_camera != null) if (_camera != null)
{ {
AudioManager.Instance.PlayErrorSound(); //사운드 추가
_camera.transform.DOShakePosition(0.5f, 0.5f).OnComplete(() => _camera.transform.DOShakePosition(0.5f, 0.5f).OnComplete(() =>
{ {
_camera.transform.position = new Vector3(0,0,-10); _camera.transform.position = new Vector3(0,0,-10);

View File

@ -36,6 +36,8 @@ public partial class GameLogic
{ {
if (_board[row, col] != Enums.PlayerType.None) return; if (_board[row, col] != Enums.PlayerType.None) return;
AudioManager.Instance.PlayStoneSound(); //사운드 추가
switch (playerType) switch (playerType)
{ {
case Enums.PlayerType.PlayerA: case Enums.PlayerType.PlayerA:

View File

@ -14,6 +14,8 @@ public class DrawEffectController : EffectController
public override void ShowEffect(OnEffectPanelEnded onEffectPanelEnd) public override void ShowEffect(OnEffectPanelEnded onEffectPanelEnd)
{ {
AudioManager.Instance.PlayDrawSound(); //사운드 추가
gameObject.SetActive(true); gameObject.SetActive(true);
cancellationTokenSource = new CancellationTokenSource(); cancellationTokenSource = new CancellationTokenSource();
onEffectPanelEnded = onEffectPanelEnd; onEffectPanelEnded = onEffectPanelEnd;

View File

@ -14,6 +14,8 @@ public class LoseEffectController : EffectController
public override void ShowEffect(OnEffectPanelEnded onEffectPanelEnd) public override void ShowEffect(OnEffectPanelEnded onEffectPanelEnd)
{ {
AudioManager.Instance.PlayLoseSound(); //사운드 추가
gameObject.SetActive(true); gameObject.SetActive(true);
cancellationTokenSource = new CancellationTokenSource(); cancellationTokenSource = new CancellationTokenSource();
onEffectPanelEnded = onEffectPanelEnd; onEffectPanelEnded = onEffectPanelEnd;

View File

@ -14,6 +14,8 @@ public class RatingDownEffectController : EffectController
public override void ShowEffect(OnEffectPanelEnded onEffectPanelEnd) public override void ShowEffect(OnEffectPanelEnded onEffectPanelEnd)
{ {
AudioManager.Instance.PlayRatingDownSound(); //사운드 추가
gameObject.SetActive(true); gameObject.SetActive(true);
cancellationTokenSource = new CancellationTokenSource(); cancellationTokenSource = new CancellationTokenSource();
onEffectPanelEnded = onEffectPanelEnd; onEffectPanelEnded = onEffectPanelEnd;

View File

@ -16,6 +16,8 @@ public class RatingUpEffectController : EffectController
public override void ShowEffect(OnEffectPanelEnded onEffectPanelEnd) public override void ShowEffect(OnEffectPanelEnded onEffectPanelEnd)
{ {
AudioManager.Instance.PlayRatingUpSound(); //사운드 추가
gameObject.SetActive(true); gameObject.SetActive(true);
cancellationTokenSource = new CancellationTokenSource(); cancellationTokenSource = new CancellationTokenSource();
onEffectPanelEnded = onEffectPanelEnd; onEffectPanelEnded = onEffectPanelEnd;

View File

@ -16,6 +16,8 @@ public class WinEffectController : EffectController
public override void ShowEffect(OnEffectPanelEnded onEffectPanelEnd) public override void ShowEffect(OnEffectPanelEnded onEffectPanelEnd)
{ {
AudioManager.Instance.PlayWinSound(); //사운드 추가
gameObject.SetActive(true); gameObject.SetActive(true);
cancellationTokenSource = new CancellationTokenSource(); cancellationTokenSource = new CancellationTokenSource();
onEffectPanelEnded = onEffectPanelEnd; onEffectPanelEnded = onEffectPanelEnd;

View File

@ -32,6 +32,12 @@ public class RatingPointsController : MonoBehaviour
sequence.Append( sequence.Append(
imageOBject.GetComponent<Transform>().DOLocalRotate(new Vector3(0f, 90f, 0f), flipDuration).SetEase(Ease.InExpo)); imageOBject.GetComponent<Transform>().DOLocalRotate(new Vector3(0f, 90f, 0f), flipDuration).SetEase(Ease.InExpo));
sequence.AppendCallback(() =>
{
AudioManager.Instance.PlayRatingSound(); //사운드 추가
});
sequence.Append( sequence.Append(
imageOBject.GetComponent<Transform>().DOLocalRotate(Vector3.zero, flipDuration).SetEase(Ease.OutExpo)); imageOBject.GetComponent<Transform>().DOLocalRotate(Vector3.zero, flipDuration).SetEase(Ease.OutExpo));
sequence.Join( sequence.Join(