코인, Coin
원래 코인(Coin)은 Jelly의 일종으로 AddScore(점수추가)기능만 구현하려고 하였는데, 코인을 얻어 해금하는 식으로 하자는 얘기가 나와 코인 스크립트를 따로 생성하였다.
코인에는 AddScore를 추가했던 것처럼 SerializeField를 이용하여 Inspector에서 각각의 프리펩(오브젝트)에 코인값을 입력할 수 있게 해주었으며 다른 아이템과 동일하게 충돌하면 사라지고, 사라지면 아이템의 효과가 적용되는 방식이다.
public class Coin : Item
{
[SerializeField] private int coin;
public override void ApplyEffect(Cookie cookie)
{
base.ApplyEffect(cookie);
GameManager.Instance.AddCoin(coin);
}
}
원래 젤리에 있던 AddScore기능은 모든 아이템(포션, 부스터 포함)을 먹었을 때에도 추가되어야한다는 의견이 있어 Jelly에서 Item으로 옮겨주었고, Jelly 스크립트는 효과음 등의 코드만 남게되었다.
public class Item : MonoBehaviour
{
[SerializeField] private int addScore;
private void OnTriggerEnter2D(Collider2D collision)
{
Cookie cookie = collision.GetComponent<Cookie>();
if (cookie != null)
{
ApplyEffect(cookie);
Destroy(gameObject);
}
}
public virtual void ApplyEffect(Cookie cookie)
{
GameManager.Instance.AddScore(addScore);
}
}
이로써 Coin 스크립트를 넣으면 점수와 코인을 설정할 수 있게 된다.
AddCoin은 게임매니저에 추가해주었으며
public class GameManager : Singleton<GameManager>
{
public int totalCoin;
public void AddCoin(int coin)
{
totalCoin += coin;
PlayerPrefs.SetInt("TotalCoin", totalCoin);
PlayerPrefs.Save();
Debug.Log($"코인 {totalCoin} 누적");
}
}
저장을 해두어야 코인을 사용할 수 있을텐데 어떤방식으로 해야할까 하던 중 PlayerPrefs를 이용하여 추가하게 되었다.
PlayerPrefs는 예전에 유니티를 막 입문했을때 접했던 적이 있었는데
간단하게 수치, 데이터를 직접 클라이언트에 저장/관리하는 유니티에서 제공하는 데이터 관리 클래스이다.
key, Value 형식으로 데이터를 저장하며 int, float, string, bool 타입의 데이터만 가능하기 때문에 제한적이나 매우 간단하며 다른 저장방식도 있으나 유니티에 내장되어있다는 장점이 있어 이 방식으로 진행하였다.
디버그로그는 UI 만들기 전 임시로 테스트하고자 같이 넣어두었으며
코인을 먹으면 콘솔창에 디버그로그로 띄울 수 있게 해두었다, 결과는 성공적!
이걸 가지고 나중에 UI 담당분이 이쁘게 띄워주실 예정이다.
- 금일 피드백을 받았는데 PlayerPrefs보다 다른 좋은 방법들이 많으니 다른방법을 사용해보라고 하셨다.
그 방법에 대해선 공부해봐야겠다..
'Unity > Unity Study' 카테고리의 다른 글
[Unity] 개인 프로젝트 중, 키 입력 시 이미지 띄우기 (0) | 2025.03.11 |
---|---|
[Unity] 쿠키런 모작 팀 프로젝트 중, Map 제작 (0) | 2025.03.04 |
[Unity] 쿠키런 모작 팀 프로젝트 중, Item 2 - 기본 아이템 구현 (완성) (0) | 2025.02.27 |
[Unity] 쿠키런 모작 팀 프로젝트 중, Item 1 - 기본 아이템 구현 (트러블) (0) | 2025.02.26 |
[Unity] 트러블 슈팅 : Say_Gamja 기능 일부 (0) | 2025.02.20 |