사생활 보호 설정
https://gamjia.tistory.com
Updated News
Mini Rooms
답글수 [0]
What Friends Say
한마디로 표현해봐~
1촌평 관리
수박게임 재개발일지 - 6
GamJia 2025. 2. 9. 04:22
수박게임 재개발일지 6편시간이 너무 빠르다
마지막으로 개발 일지를 올렸을 때가아직 두번째 게임인 나이프 마스터를한참 개발할 때 였는데..지금은 벌써 네번째 게임 개발중이니..시간이 너무 빠르다
나 왜 캔버스를 2개 나눈거지..?게임 영역과 UI 영역을 구분하려고?귀찮아서 그냥 합쳤다
Cocos에서는 Background에Button Component를 추가하면밑에 있는 객체의 event의 진행을 쉽게 막는다 처음으로 Cocos가 그리워진 순간
public EnableTouchEvents(enable: boolean) { const method = enable ? 'on' : 'off'; input[method](Input.EventType.TOUCH_START, this.GetMouseButtonDown, this); input[method](Input.EventType.TOUCH_MOVE,this.GetMouseButton,this); input[method](Input.EventType.TOUCH_END, this.GetMouseButtonUp, this); }
회사에서는 이럴 때 주로 이런 이벤트등록, 해제를 관리하는데 이것처럼터치 이벤트로 관리하기로 했다
using UnityEngine; using UnityEngine.EventSystems; public class ClawManager : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IDragHandler { [SerializeField] private Claw claw; public void OnPointerDown(PointerEventData eventData) { claw.BeginDrag(); } public void OnDrag(PointerEventData eventData) { claw.OnDrag(); } public void OnPointerUp(PointerEventData eventData) { claw.EndDrag(); } }
기존에 Claw의 Update에 돌아가던 내용을ClawManager라는 녀석이 관리하게 해주었다그리고 이 녀석을 Claw의 부모 객체로 적용했다
그리고 그 위에 UI 배경을 두었더니밑에 있는 ClawManager의 TouchEvent가 막혀서좌우 이동이 안되는 모습이다머지, 생성과는 관련 없다 단지 이동만 안되는 것
마우스 커서가 안보이지만..암튼 UI가 있을 때는 배경의 영향으로드래그가 안되는 모습이다
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public enum SettingType { Sound, Haptic } public class SettingButton : MonoBehaviour { public SettingType settingType = SettingType.Sound; [SerializeField] private Sprite activeImage; [SerializeField] private Sprite inActiveImage; private Image buttonImage; private Text buttonText; void Awake() { buttonImage = GetComponent<Image>(); buttonText = GetComponentInChildren<Text>(); } void OnEnable() { if (settingType == SettingType.Sound) { bool isBGM = PlayerPrefs.GetInt("isBGM", 1) == 1; UpdateSetting(isBGM); } else if (settingType == SettingType.Haptic) { bool isVib = PlayerPrefs.GetInt("isVib", 1) == 1; UpdateSetting(isVib); } } public void ChangeSetting() { if (settingType == SettingType.Sound) { bool isBGM = PlayerPrefs.GetInt("isBGM", 1) == 1; isBGM = !isBGM; // 반전 PlayerPrefs.SetInt("isBGM", isBGM ? 1 : 0); UpdateSetting(isBGM); } else if (settingType == SettingType.Haptic) { bool isVib = PlayerPrefs.GetInt("isVib", 1) == 1; isVib = !isVib; // 반전 PlayerPrefs.SetInt("isVib", isVib ? 1 : 0); UpdateSetting(isVib); } } private void UpdateSetting(bool isActive) { buttonImage.sprite = isActive ? activeImage : inActiveImage; if (buttonText != null) { buttonText.text = isActive ? "Yes!" : "Nope!"; } } }
Setting 버튼에 Setting창 활성/비활성애니메이션을 연결해주고설정창이 활성화 될 때마다 저장한 정보를불러오는 기능을 연결해주었다
설정창이 활성화 될 때는 Claw의 이동 기능이동작 안하고, 설정 정보가 잘 저장되는걸 확인했다이걸 이용해서 AudioManager, NiceVibration시스템을 변경할 수 있다 마지막에는 게임 오버 연출 변경된걸 찍어보았다사실 좀 부끄럽지만 심심해서 디지몬 노래를 틀었는데너무 신나서 몸을 흔들다가 멀미가 생겼다;;;;나중에 해야겠다 미치겠다.............제정신 아니다.. https://www.youtube.com/watch?v=h3QiuepzaMQ