수박게임 재개발일지 - 6

수박게임 재개발일지 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