본문 바로가기

유니티31

[유니티] #4 수박 게임 만들기 (난이도, 씬매니저) 난이도 조정 private Fruit RandomRequest(){ // 기본적으로 요청할 수 있는 최소 과일 (토마토) int baseRequestCount = 3; // completeCount가 3번 증가할 때마다 요청할 수 있는 과일 인덱스 증가 int increaseCount = Mathf.FloorToInt(NPCManager.Instance.completeCount / 3); // 요청 가능한 과일의 최대 인덱스 계산 (과일 목록 초과하지 않도록 제한) int maxRequestIndex = Mathf.Min(FruitManager.Instance.FruitList.Count, baseRequestCount + increaseCoun.. 2025. 3. 9.
[유니티] #3 수박 게임 만들기 (사운드, 애니메이션, 이펙트) 사운드 (BGM, SFX) 더 생동감 있는 게임을 위해 사운드를 추가했다. using UnityEngine;public class SoundManager : MonoBehaviour{ [Header("references")] [SerializeField] private AudioClip bgmClip; private AudioSource _audioSource; private void Start() { _audioSource ??= GetComponent(); } public void PauseBGM() { _audioSource.Pause(); } public void ResumeBGM() { _audioS.. 2025. 3. 4.
[유니티] #2 수박 게임 만들기 (UI) 수박 게임을 만들면서 NPC와 UI를 어떻게 처리해야 할지 고민했다.일단 UI를 2개의 Canvas로 분리하여 글로벌 정보(일시 정지 버튼, 골드량)와 게임 내 상호작용(터치 패드, NPC 요청 패널)을 만들었다. 글로벌 캔버스  1. GlobalCanvas (Screen Space - Overlay) 이 캔버스는 카메라와 관계없이 항상 화면 위에 렌더링 된다.항상 화면에 보여야 하는 정보를 위한 UI이므로, 다른 게임 오브젝트에 영향 받지 않고 안정적으로 노출된다.예시: 일시 정지 버튼, 현재 골드량 UI 2. Canvas (World Space)이 캔버스는 게임 월드의 일부처럼 동작하며, 게임 플레이와 직접 연관된 UI를 담는다.게임 내 상호작용이 필요한 UI이므로, 카메라에 따른 변화가 중요하다.예.. 2025. 2. 26.
[유니티] 게임 재화 저장하는 방법 : PlayerPrefs + XOR 연산, JSON + AES-256 PlayerPrefs +  XOR 연산 PlayerPrefs를 사용하여 게임 내 재화를 저장하는 방법을 구현해 보았다.이 방법은 비트 연산을 활용하여 보안 기능을 추가한 방식이다. public class GoldManager : SingleTon{ [SerializeField] private TextMeshProUGUI goldText; private int currentGold; private readonly int goldKey = 123456; // 암호화 키 public int CurrentGold { get => currentGold ^ goldKey; // 복호화 private set => currentGold = value ^ goldKey.. 2025. 2. 25.
[유니티] C#에서 여러 값을 반환하는 방법 : out, Tuple C#에서 함수가 여러 개의 값을 반환해야 할 때, out 키워드와 Tuple을 사용할 수 있다.둘 다 여러 값을 반환할 수 있지만, 방식과 사용 용도가 조금 다르다.  튜플은 가독성이 좋고 요즘 많이 사용되는 방식이라고 한다.다만 최적화가 필요한 경우 out 키워드가 더 나을 수 있다.   Out 키워드  out 키워드를 사용하면 함수 내부에서 전달된 변수를 직접 수정할 수 있다.즉, 함수가 void라도 out 키워드를 사용하면 여러 개의 값을 반환할 수 있다. 위 코드에서 Calculate 함수는 void 지만, sum과 product 값을 out을 통해 반환한다.   C# 7.0 이전 함수 호출 전에 sum과 product 변수를 미리 선언해야 했다.out 키워드는 함수 내부에서 값을 설정하지만, 변.. 2025. 2. 24.
[유니티] #1 수박 게임 만들기 (최적화) 물리 엔진을 이용한 수박 게임을 만들었다.프레임 드랍을 줄이기 위해 Instantiate와 Destroy를 오브젝트 풀로 바꾸었고,코루틴 함수도 없애고 Invoke로 바꾸었다. 중간까지는 괜찮지만 박스에 중간쯤 과일이 가득차면,과일이 제멋대로 날아가고 Merge 함수도 작동을 하지 않는다.가끔 과일이 합쳐지면서 박스 밖으로 나가기도 한다.      버벅거림이 심해지고 Merge 함수 호출이 미뤄질 때 전후 사진이다.Physics가 과도하게 CPU를 사용중인걸 볼 수 있다.  Collider 줄이기  과일 프리팹에 캡슐 콜라이더 2~3개, 폴리곤 콜라이더가 들어있었는데이걸 캡슐 콜라이더 1~2개로 줄이고 폴리곤 콜라이더도 최대한 없앴다. 과일이 박스를 꽉 채웠는데도 CPU 사용량이 아까보다 줄었다.   S.. 2025. 2. 15.