본문 바로가기

전체 글58

[유니티] #8 광부 타이쿤 게임 만들기 (버그 수정, 창고) 엘리베이터 광부의 저장 용량이 꽉 찼거나 마지막 샤프트에 도착하면 입금 위치로 이동하고,아닐 경우엔 계속 다음 샤프트로 이동하도록 한다.마지막 샤프트에 도달했을 때가 금을 수집하는 로직 아래 있기 때문에 수집하고 이동할 것이다.   BaseMiner에 IEDeposit을 추가한다.샤프트 광부는 입금하고 바로 이동했기에 필요 없었지만 엘리베이터 광부는 입금하는데 시간을 들일 생각이다.ElevatorMiner 스크립트에서 오버라이드 하기 위해 빈 상태로 둔다.   엘리베이터 광부가 금을 입금하는 DepositGold 함수와 코루틴 함수를 만든다.입금 위치로 올라갔는데 입금할 금이 없으면 다시 수집을 시작하고,있으면 코루틴을 통해 입금하고 수집을 시작하는 순서이다.   엘리베이터 광부가 가지고 있는 코인을 U.. 2025. 1. 20.
[유니티] #7 광부 타이쿤 게임 만들기 (제너럴 싱글톤, 엘리베이터) 새로운 Singleton 스크립트를 만들어서 제네릭 싱글톤 패턴을 구현한다.외부에서 임의로 변경하거나 초기화하지 못하게 프로퍼티를 이용해 instance를 반환한다. 제네릭 싱글톤은 상속을 통해 확장되도록 설계되었다.Awake 메서드는 싱글톤 초기화와 관련된 중요한 작업을 수행하므로,외부로부터 보호하는 대신 상속받은 클래스에서는 사용할 수 있도록 protected로 설정한다.또한 상속받은 클래스에서 초기화 과정을 확장하거나 수정할 수 있도록 virtual로 설정한다. this as T를 사용하는 이유는 현재 객체를 T로 형변환하여 instance에 저장하려는 것이다.   이제 제네릭 싱글톤을 만들었으니 스크립트로 가서 교체한다.기존 인스턴스를 지우고 Singleton 스크립트를 상속받으면 된다.다른 스크.. 2025. 1. 18.
[유니티] #6 광부 타이쿤 게임 만들기 (싱글톤, 골드매니저) 새로운 스크립트 GoldManager를 만들고 변수를 선언한다.readonly는 읽기 전용이라는 뜻으로 초기화된 값을 변경할 수는 없지만 읽어올 수는 있다. 비슷한 개념으로 const는 컴파일 타임에 값을 초기화하고 readonly는 런타임에 값을 초기화할 수 있다.   CurrentGold를 +, - 하는 함수를 추가한다.PlayerPrefs는 픽셀 2D Run 게임 만들기에서도 사용했던 클래스다.플레이어의 디바이스에 게임 데이터를 저장하고 로드할 수 있다. 보안이 취약하기 때문에 대규모 데이터나 중요한 데이터를 저장하는 데에는 부적합하지만사용하는 방법이 간편하기에 여기서는 일단 쓰기로 한다.   SetInt를 통해 저장한 값을 GetInt로 가져오고 Start 메서드에서 호출한다.   싱글톤 패턴을 .. 2025. 1. 17.
[유니티] #5 광부 타이쿤 게임 만들기 (업그레이드, 델리게이트) 광부의 이동 속도, 수집 속도 및 정리 용량을 업그레이드 하기 위한 배수가 필요하다.부모 스크립트로 BaseUpgrade 스크립트를 만든다.SerializeField를 사용해 private로 변수를 선언했다.   Start 메서드에서 CurrentLevel을 1로 설정한다.UpgradeCost는 private로 선언된 initialUpgradeCost를 외부에서 사용하고 업데이트 하기 위한 프로퍼티다.그외 virtual로 Base가 될 함수를 선언한다.   Shaft 스크립트를 참조하기 위한 변수를 선언한다.자식 스크립트에서도 사용하기 위해 protected로 선언했다.   새로운 ShaftUpgrade 스크립트를 만들고 BaseUpgrade 스크립트를 상속 받는다.RunUpgrade 함수를 오버라이드 .. 2025. 1. 16.
[유니티] #4 광부 타이쿤 게임 만들기 (상자, UI) 새로운 Deposit 스크립트를 생성한다.프로퍼티로 CurrentGold를 선언하고 DepositGold, RemoveGold 함수를 선언한다.각각 매개변수로 amount를 받아서 +, - 하는 함수다.   Shaft 스크립트에 SerializeField로 depositPrefab 변수를 추가하여 인스펙터에서 입금을 할 것이다.   Boxes 스프라이트를 Multiple로 바꾸고 Automatic으로 Slice 한다.   씬에 상자를 배치하고 ShaftDeposit으로 이름 변경했다.Deposit 스크립트를 추가하고 프리팹으로 만든다.   상자를 생성할 장소 depositInstantiationPos를 변수로 선언한다.CreateDeposit 함수를 만들고 Instantiate로 상자를 생성한다.   프.. 2025. 1. 14.
[유니티] #3 광부 타이쿤 게임 만들기 (애니메이터, 프로퍼티) 이제 애니메이션을 만들어볼 차례다.광부가 땅을 파고 다시 돌아올 때는 좌우반전이 일어나야 하는데위의 사진과 같이 Filp X에 체크하면 삽을 빼고 캐릭터만 좌우반전 하게 된다.부모와 자식이 같이 회전하려면 Scale의 X값을 -1로 바꿔야 한다.   BaseMiner 스크립트에 RotateMiner 함수를 선언한다.direction이 1이라면 원래대로 오른쪽을 보고, 1이 아니라면 좌우반전하여 왼쪽을 보게 된다.   선언한 RotateMiner 함수를 코루틴과 DepositGold 함수에 추가한다.   기본 애니메이션은 Idle로 지정하고 Any State에서 Mining와 Walking 애니메이션으로 연결한다.파라미터로 Trigger를 추가해 Mining과 Walking을 만든다.   Mining과 W.. 2025. 1. 13.
[유니티] #2 광부 타이쿤 게임 만들기 (코루틴, DOTween) Game 탭에서 해상도를 수정한다.1080x1920 크기로 설정했다. 하이라이키 창에서 UI → Image를 눌러 Source Image에 배경을 넣는다.   인스펙터에서 X, Y 축 값을 0으로 수정하고 크기를 1080x1920으로 수정한다.게임 탭 배경이 이미지 크기(1080x1920)와 딱 맞게 된다.   Canvas의 Render Mode를 Screen Space - Camera로 변경하고 메인 카메라를 넣어준다.캔버스 이미지가 플레이어를 가리지 않고 씬과 게임창에 똑같이 뜨는 것을 볼 수 있다.   가져올 이미지를 Multiple로 설정하고 Sprite Editor에 들어간다.Automatic Slice를 하면 자동으로 이미지가 잘라진다.Ctrl 버튼을 누르면 모든 스프라이트의 히트박스를 볼 수.. 2025. 1. 12.
[유니티] #1 광부 타이쿤 게임 만들기 (캐릭터 Bone 애니메이션) ShaftMiner 이미지의 Sprite Editor에 들어간다.Skinning Editor로 바꾸고 스프라이트 이미지를 클릭하면 각 부분이 활성화된다.이 뼈를 연결하고 캐릭터를 애니메이션화 하려면 뼈를 만들어야 한다.   Create Bone 버튼을 누르고 뼈를 만든다.머리를 회전시키기 위해서는 처음 뼈가 목에서부터 시작해야 한다.왼쪽은 틀린 예시, 오른쪽이 맞는 예시이다.   Create Bone 버튼을 눌러 모든 부분에 뼈를 만든다.몸통을 중앙으로 퍼지듯이 만들면 된다. Split Bone 버튼은 뼈를 2개로 나눌 수 있고, Edit Bone은 뼈의 크기를 조정하거나 방향을 변경할 수 있다.   Auto Geometry 버튼을 누르면 뼈와 지오메트리가 연결된다.Generate For Selected.. 2025. 1. 11.
[ChatGPT] GPT를 200% 활용하는 패턴들 1. 페르소나 패턴 GPT를 전문가라고 가정하여 질문하기"당신이 FAANG 회사의 선임 엔지니어라고 가정합니다.보안과 성능에 주의를 기울여 다음 코드를 검토하세요.선임 엔지니어라면 해당 코드에 대해 생성할 수 있는 출력을 제공하세요."  2. 레시피 패턴 달성하고 싶은 목표가 있고 재료, 단계를 어느정도 알고 있지만 이를 모두 조합할 때 도움이 필요한 경우 사용하기"데이터를 암호화하는 Rust 프로그램을 작성하려고 합니다.사용자 입력을 읽고, 유효성을 검증하고, 암호화하고 , 암호화된 데이터를 반환해야 한다는 것을 알고 있습니다.이를 위해 전체 단계 순서를 알려주고, 누락된 단계를 채우고, 불필요한 단계가 있는지 확인해 주세요."  3. 리플렉션 패턴 모든 답변에 대한 이유를 설명하도록 요청하기"답변을 .. 2025. 1. 9.