diff --git a/Assets/02_Scripts/Managers/Global/DataManager.cs b/Assets/02_Scripts/Managers/Global/DataManager.cs index 004779c..3e4a28b 100644 --- a/Assets/02_Scripts/Managers/Global/DataManager.cs +++ b/Assets/02_Scripts/Managers/Global/DataManager.cs @@ -32,8 +32,8 @@ private void Awake() private async Awaitable Start() { - //await LoadUserCharacters(1); - //await LoadPlayableCharacters(); + await LoadUserCharacters(1); + await LoadPlayableCharacters(); } public async Awaitable LoadUserCharacters(int userNo) diff --git a/Assets/02_Scripts/Managers/Global/NetworkManager.cs b/Assets/02_Scripts/Managers/Global/NetworkManager.cs index 6f952ce..738884c 100644 --- a/Assets/02_Scripts/Managers/Global/NetworkManager.cs +++ b/Assets/02_Scripts/Managers/Global/NetworkManager.cs @@ -9,8 +9,8 @@ public class NetworkManager : MonoBehaviour { public static NetworkManager Instance; - private string _baseGameDBUrl = "https://localhost:7134/myGame"; - //private string _baseGameDBUrlHttp = "http://localhost:5281/myGame"; + //private string _baseGameDBUrl = "https://localhost:7134/myGame"; + private string _baseGameDBUrlHttp = "http://152.69.235.249:5000/myGame"; private void Awake() { @@ -26,7 +26,7 @@ private void Awake() public async Awaitable GetDatabaseData(string endPoint) { - string url = $"{_baseGameDBUrl}/{endPoint}"; + string url = $"{_baseGameDBUrlHttp}/{endPoint}"; using UnityWebRequest request = UnityWebRequest.Get(url); //앞의 using은 사용이 끝난(메서드 종료) 외부 리소스 객체들을 알아서 지워주도록 설정하는 예약어이다 request.certificateHandler = new BypassCertificate(); diff --git a/Assets/02_Scripts/UI/Menu/SwapButton.cs b/Assets/02_Scripts/UI/Menu/SwapButton.cs new file mode 100644 index 0000000..b9c98a1 --- /dev/null +++ b/Assets/02_Scripts/UI/Menu/SwapButton.cs @@ -0,0 +1,53 @@ +using UnityEngine; +using UnityEngine.Events; +using UnityEngine.EventSystems; +using UnityEngine.UI; + +[RequireComponent(typeof(Image))] +public class SwapButton : MonoBehaviour, IPointerClickHandler +{ + public Image TargetImage; + + public Sprite ASprite; + public UnityEvent ClickEventA = new UnityEvent(); + + public Sprite BSprite; + public UnityEvent ClickEventB = new UnityEvent(); + + [SerializeField] private bool _trueA_FalseB = true; + + public bool TrueA_FalseB + { + get => _trueA_FalseB; + set + { + _trueA_FalseB = value; + UpdateVisual(); // 값이 바뀔 때마다 자동으로 실행! + } + } + + private void Awake() + { + TargetImage = GetComponent(); + } + + public void OnPointerClick(PointerEventData eventData) + { + TrueA_FalseB = !TrueA_FalseB; + + if (TrueA_FalseB) + ClickEventA?.Invoke(); + else + ClickEventB?.Invoke(); + } + + private void OnValidate() + { + UpdateVisual(); + } + public void UpdateVisual() + { + if (TargetImage == null) return; + TargetImage.sprite = _trueA_FalseB ? ASprite : BSprite; + } +} diff --git a/Assets/02_Scripts/UI/Menu/SwapButton.cs.meta b/Assets/02_Scripts/UI/Menu/SwapButton.cs.meta new file mode 100644 index 0000000..4c71036 --- /dev/null +++ b/Assets/02_Scripts/UI/Menu/SwapButton.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 7742f072d8001394ca9c68f41507c667 \ No newline at end of file diff --git a/Assets/02_Scripts/UI/Setting.meta b/Assets/02_Scripts/UI/Setting.meta new file mode 100644 index 0000000..8bbae77 --- /dev/null +++ b/Assets/02_Scripts/UI/Setting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cef5f8318ff01d04d98d7f10b0d9ec62 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/02_Scripts/UI/Setting/SettingUIPopup.cs b/Assets/02_Scripts/UI/Setting/SettingUIPopup.cs new file mode 100644 index 0000000..adf49c1 --- /dev/null +++ b/Assets/02_Scripts/UI/Setting/SettingUIPopup.cs @@ -0,0 +1,138 @@ +using UnityEngine; +using UnityEngine.Audio; +using UnityEngine.UI; + +public class SettingUIPopup : MonoBehaviour +{ + //오디오 설정 + [Header("Audio Settings")] + public AudioMixer mixer; // 믹서는 한개만 쓴다 + public Slider masterSlider, bgmSlider, sfxSlider; + public SwapButton masterMute, bgmMute, sfxMute; + private float _defaultVolumeSlider = 0.2f; + + private void Start() + { + //오디오 + ResetMasterVolume(); + ResetBGMVolume(); + ResetSFXVolume(); + } + + #region 오디오 + private void ResetMasterVolume() + { + float masterSliderValue = _defaultVolumeSlider; + if (PlayerPrefs.HasKey("volumeMaster")) + { + masterSliderValue = PlayerPrefs.GetFloat("volumeMaster"); + } + masterSlider.value = masterSliderValue; + mixer.SetFloat("volumeMaster", CalculateVolume(masterSliderValue)); + } + + private void ResetBGMVolume() + { + float bgmSliderValue = _defaultVolumeSlider; + if (PlayerPrefs.HasKey("volumeBGM")) + { + bgmSliderValue = PlayerPrefs.GetFloat("volumeBGM"); + } + bgmSlider.value = bgmSliderValue; + mixer.SetFloat("volumeBGM", CalculateVolume(bgmSliderValue)); + } + + private void ResetSFXVolume() + { + float sfxSliderValue = _defaultVolumeSlider; + if (PlayerPrefs.HasKey("volumeSFX")) + { + sfxSliderValue = PlayerPrefs.GetFloat("volumeSFX"); + } + sfxSlider.value = sfxSliderValue; + mixer.SetFloat("volumeSFX", CalculateVolume(sfxSliderValue)); + } + + float CalculateVolume(float _sliderValue) + { + var slider = Mathf.Clamp(_sliderValue, 0.0001f, 1f); // 아래에서 로그변환할때 0이 들어가면 안됨 + float dB = Mathf.Log10(slider) * 20f; //데시벨 변환식 + return Mathf.Clamp(dB, -80f, 0f); //-80dB에서 0dB까지 조절할수있게 _sliderValue 최대값이 1이므로 dB는 계산상 0보다 크게 나올수 없음 (0db이 기준) + } + + public void SliderVolumeMaster(float value) // 마스터 볼륨 슬라이더에 연결할 메서드 + { + if (value > 0) + masterMute.TrueA_FalseB = true; //슬라이더를 움직였으니 뮤트가 풀리도록 + else if (value <= 0) + masterMute.TrueA_FalseB = false; //0이면 음소거 + + var volume = CalculateVolume(value); //볼륨 계산 + mixer.SetFloat("volumeMaster", volume); //볼륨 적용 + + PlayerPrefs.SetFloat("volumeMaster", value);//슬라이더 값 저장 + } + public void SliderVolumeBGM(float value) // BGM 볼륨 슬라이더에 연결할 메서드 + { + if (value > 0) + bgmMute.TrueA_FalseB = true; //슬라이더를 움직였으니 뮤트가 풀리도록 + else if (value <= 0) + bgmMute.TrueA_FalseB = false; //0이면 음소거 + + var volume = CalculateVolume(value); //볼륨 계산 + mixer.SetFloat("volumeBGM", volume); + PlayerPrefs.SetFloat("volumeBGM", value);//슬라이더 값 저장 + } + public void SliderVolumeSFX(float value) // SFX 볼륨 슬라이더에 연결할 메서드 + { + if (value > 0) + sfxMute.TrueA_FalseB = true; //슬라이더를 움직였으니 뮤트가 풀리도록 + else if (value <= 0) + sfxMute.TrueA_FalseB = false; //0이면 음소거 + + var volume = CalculateVolume(value); //볼륨 계산 + mixer.SetFloat("volumeSFX", volume); + PlayerPrefs.SetFloat("volumeSFX", value);//슬라이더 값 저장 + } + + public void MuteMaster(bool isMute) + { + if (isMute) + { + mixer.SetFloat("volumeMaster", CalculateVolume(0)); + //masterSlider.value = 0; + masterSlider.SetValueWithoutNotify(0); + } + else + { + ResetMasterVolume(); + } + } + public void MuteBGM(bool isMute) + { + if (isMute) + { + mixer.SetFloat("volumeBGM", CalculateVolume(0)); + //bgmSlider.value = 0; + bgmSlider.SetValueWithoutNotify(0); + } + else + { + ResetBGMVolume(); + } + } + public void MuteSFX(bool isMute) + { + if (isMute) + { + mixer.SetFloat("volumeSFX", CalculateVolume(0)); + //sfxSlider.value = 0; + sfxSlider.SetValueWithoutNotify(0); + } + else + { + ResetSFXVolume(); + } + } + #endregion +} diff --git a/Assets/02_Scripts/UI/Setting/SettingUIPopup.cs.meta b/Assets/02_Scripts/UI/Setting/SettingUIPopup.cs.meta new file mode 100644 index 0000000..4def783 --- /dev/null +++ b/Assets/02_Scripts/UI/Setting/SettingUIPopup.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: b03bd5482dd96ac448d1265a3214aa48 \ No newline at end of file diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index e80d19a..9db880f 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f11d9dcf62a7043ded890e9281305df89ad9ca557197e644d4ff4de6526cc02a +oid sha256:93c01ede81459758c6325c1f079b69399ac3ff107819d34fe98b4ca8b60698cc size 25405