public class PopupUI : MonoBehaviour
{
[SerializeField] Button noBtn;
[SerializeField] Button closeBtn;
[SerializeField] Button exitBtn;
public RectTransform panelTransform; // 팝업 판넬의 transform
private bool isPopupAcitve = false; // 팝업 열렸는지, 닫혔는지
public CanvasGroup popupCanvasGroup; // canvas 전체
public void Start()
{
popupCanvasGroup.alpha = 0; // 처음은 투명한 상태
popupCanvasGroup.blocksRaycasts = false; // 클릭x
popupCanvasGroup.interactable = false; // 비활성화
noBtn.onClick.AddListener(OnCloseButtonClick); // no 버튼
closeBtn.onClick.AddListener(OnCloseButtonClick); // 닫기 버튼
exitBtn.onClick.AddListener(OnExitButtonClick); // 게임 종료 버튼
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Escape))
{
if (isPopupAcitve) { ClosePopup(); }
else { OpenPopup(); }
}
}
// 팝업 오픈
public void OpenPopup()
{
isPopupAcitve = true;
// 판넬 활성화
popupCanvasGroup.gameObject.SetActive(true);
// DOtween 애니메이션
// 2초동안 확대 애니메이션
popupCanvasGroup.DOFade(1, 0.2f).SetEase(Ease.OutBack);
popupCanvasGroup.blocksRaycasts = true; // 클릭 활성화
popupCanvasGroup.interactable = true;
}
public void ClosePopup()
{
isPopupAcitve = false;
// 크기 줄어들면서 팝업 사라짐
popupCanvasGroup.DOFade(0, 0.2f).SetEase(Ease.InBack).OnComplete(() =>
{
popupCanvasGroup.blocksRaycasts = false;
popupCanvasGroup.interactable = false;
});
}
// 게임 이어서하기 버튼 (팝업 닫기)
public void OnCloseButtonClick()
{
ClosePopup();
}
// 게임 종료 버튼
public void OnExitButtonClick()
{
// 전처리 작업 필요
Application.Quit();
}
public class FollowPlayer : MonoBehaviour
{
public Transform player;
//GameManager gameManager;
// 오브젝트 위치
RectTransform rectTransform;
public float height = 0.1f;
void Awake()
{
rectTransform = GetComponent<RectTransform>();
if (rectTransform == null)
Debug.LogError("RectTransform NULL");
//DontDestroyOnLoad(gameObject);
}
// Update is called once per frame
void FixedUpdate()
{
// 스크린 좌표로 플레이어의 위치를 변환해서 따라간다
Vector3 screenPoint = Camera.main.WorldToScreenPoint(new Vector3(player.position.x, player.transform.position.y));
rectTransform.position = screenPoint;
}
}
너무 많은 정보를 한 번에 흡수하고,,.
UI끼리 관계를 생각하다보니까 시간이 정말 빠르게 지났다.
DOTween을 이용하니 시간이 정말 많이 단축되었고, 이를 이용해 남은 UI 작업을 빠르게 마치는 것이 목표다.
이어서 사운드/상점/인벤토리를 구축해야 하고, UI디자인을 미관상 좋게 바꿔야 하기 때문에 시간이 빠듯할 것으로 보인다.