전체 글58 [유니티] #16 광부 타이쿤 게임 만들기 (부스트) ManagersController 스크립트에 RestoreManagerCard 함수를 추가했다.위의 코드는 for 루프를 이용해 순환하며 해당 매니저를 찾는 것이고,아래 코드는 Find 함수를 이용해 최적화한 것이다. UnassignManager 함수를 이용해 방금 만든 함수를 호출하고 해당 위치에 매니저를 할당 해제한다. 이제 Unassign 버튼을 눌렀을 때 매니저가 할당 해제되고 다시 목록으로 돌아오게 된다.하지만 아직 패널에는 고용된 것으로 보이므로 수정해야 한다. UI 패널을 참조하기 위한 assignedManagerPanel 변수를 선언한다.UpdateAssignedManagerInfo 함수에 로직을 추가한다.managerLocation의 Manager가 비어있으면 값을 모두 nul.. 2025. 2. 7. [유니티] #15 광부 타이쿤 게임 만들기 (매니저, Mask, RayCast) Skinning Editor에서 뼈를 만들어서 Sprite Skin 컴포넌트를 추가했다.Depth를 입력하여 렌더링 순서도 맞춰야 한다. Idle 애니메이션을 만들어서 머리와 손 또는 발을 움직이도록 했다광부 3명을 만들 때 반복했던 작업이라 손쉽게 할 수 있다. Elevator 오브젝트 안에 Sprite Mask를 추가한다.이름은 ElevatorWindowMask로 변경했는데 빈 오브젝트에 Sprite Mask 컴포넌트만 추가해도 된다.컴포넌트의 Sprite로 ElevatorMask를 넣는다. Rosa 매니저의 Mask Interaction을 None → Visible Inside Mask로 변경한다. Mask Interaction을 사용하면 특정 영역(안개, 동굴, 그림자) 안에서만 .. 2025. 2. 5. [유니티] #14 광부 타이쿤 게임 만들기 (매니저 카드, Scriptable) 새로운 ManagerCard 스크립트를 만든다.새 매니저를 생성하고 관리하려면 프리팹으로 만들어야 한다.매니저 카드 안의 오브젝트를 변수에 드래그해서 참조한다. 매니저 패널의 오브젝트를 사용할 수 있도록 변수화를 모두 하면 프리팹으로 만든다. ManagersController 오브젝트와 스크립트를 새로 만든다.ManagerCard 프리팹을 참조하기 위한 변수와 HireManager 함수를 만든다. 매니저 카드의 정보를 입력하기 위해서는 변수값을 직접 입력해도 된다.하지만 10개의 다른 종류의 매니저를 수동으로 생성하는 것보다 더 효율적인 기능을 쓸 것이다. Manager 스크립트를 만들고 ScriptableObject를 상속받도록 한다.ScriptableObject는 여러 개의 게임 오브젝트에.. 2025. 2. 2. [유니티] #13 광부 타이쿤 게임 만들기 (창고 업그레이드, 매니저 UI) 창고 광부를 참조하기 위해서는 Warehouse 스크립트가 필요하다.BaseUpgrade에 protected로 선언한다. 지금은 문제가 없지만 부모 스크립트에서 모두 초기화 하기 때문에 null 체크를 위한 코드를 넣어도 좋을 것 같다. Warehouse 스크립트에서 miners 리스트를 프로퍼티로 선언한다.업그레이드 스크립트에서 사용하려 한다. 새로운 WarehouseUpgrade 스크립트를 만들었다.BaseUpgrade를 상속하도록 하고 RunUpgrade 함수를 오버라이드 한다.foreach는 _warehouse.Miners 리스트에 있는 WarehouseMiner 타입의 객체를 하나씩 꺼내서 miner 변수에 할당하고,꺼낸 miner 변수에 대해 업그레이드를 실행한다. 창고에는 Ware.. 2025. 2. 1. [유니티] #12 광부 타이쿤 게임 만들기 (엘리베이터 업그레이드) ElevatorUI 스크립트에서 Action을 선언한다.샤프트 때와 마찬가지로 UI 스크립트에 만들고, 로직은 업그레이드 스크립트에서 처리한다.RequestUpgrade 함수를 선언하고 매개 변수로 ElevatorUpgrade 객체를 전달해 메서드를 실행할 것이다. UpgradeManager 스크립트에서 Action에 이벤트를 구독한다.OnUpgradeRequest는 static으로 선언되어 있기 때문에 클래스의 인스턴스를 생성하지 않아도 해당 멤버에 접근할 수 있다.대신 정적 멤버는 전역적 성격을 가지므로, 필요할 때만 사용하는 것이 좋다. 이제 샤프트 패널을 눌렀을 때처럼 엘리베이터 패널이라고 뜨게 해야 한다.UpdateElevatorPanel 함수를 만들고 패널에 Elevator와 레벨이 뜨.. 2025. 1. 26. [유니티] #11 광부 타이쿤 게임 만들기 (업그레이드 버튼) UpgradeManager에서 버튼의 Color 변수와 버튼 배열을 선언한다.x1, x10,x 50, Max 버튼을 모두 이 배열에 넣는다. ActivateButton 함수를 선언한다.인스펙터에서 Disabled 컬러는 그레이로 하고 Enabled 컬러는 FFFFFF의 흰색으로 했다. 버튼 클릭 이벤트에 넣어줄 함수다.버튼이 눌릴 때마다 ActiveButton 함수가 호출돼서 버튼 상태가 업데이트 된다.예를 들어 X1을 클릭하면 그 버튼 컬러만 하얗고 나머지는 비활성화된듯한 그레이 컬러가 된다. 여기에 Dotween의 DoPunchPosition을 추가한다.0.5초 동안 -5만큼 아래로 내려갔다가 올라오는데 버튼 누를 때 생동감이 느껴진다. 업그레이드 가능 횟수를 계산하는 함수를 만들려고.. 2025. 1. 24. [유니티] Mathf.Log 함수와 레벨당 증가량 계산 Mathf.Log(x, y) 는 y를 밑으로 한 x의 로그 값을 반환하는 함수다.로그 함수의 특징 중 하나는 log(x)에서 x는 반드시 양수여야 한다는 점이다. (x > 0)따라서 x = 0 일 때 작동하지 않으므로, x + 1로 최소값을 보장할 수 있다. Mathf.Log 함수 1. 경험치 시스템 로그를 사용하면 레벨이 올라갈수록 경험치 요구량이 점차 느리게 증가한다.예를 들어 1레벨에서는 100, 3레벨에서는 200, 7레벨에서는 300이 필요하다.레벨이 높아져도 요구량이 미미하게 증가하기 때문에,만렙이 높고 꾸준히 성장감을 주는 게임에 적합할 것이다. 2. UI 크기 조정 로그 정규화를 통해 값의 변화를 부드럽게 처리할 수 있다.UI 크기 조정에 활용하면 값이 클수록 변화가 적게 느껴지는 비율.. 2025. 1. 24. [유니티] #10 광부 타이쿤 게임 만들기 (업그레이드 패널) 이제 업그레이드 패널을 만들어볼 차례다.새로운 Canvas를 만들고 안에 Image로 UpgradePanel을 만들어 크기와 색깔을 변경했다.그 안에 Top으로 앵커 위치를 맞춰주고, Button을 Set Native Size로 원본 이미지와 같은 크기로 만들었다. Button 안에 Image를 만들어 X 이미지를 넣었다.버튼 크기를 조정해주고 Top의 색깔도 바꿔줬다. Top 안에 텍스트를 넣고 예시로 글을 작성했다.사이즈는 45, 가운데 정렬, 래핑 없음으로 설정한다. UpgradePanel 안에 Image로 MinerIcon과 StatsContainer를 넣는다.알파값을 100으로 해서 약간 투명해지게 했다.추가로 Vertical Layout Group 컴포넌트를 넣는다. StatsC.. 2025. 1. 23. [유니티] #9 광부 타이쿤 게임 만들기 (창고 광부, 로딩바) 창고 광부의 Idle, WalkingNoGold 애니메이션을 만들었다.Idle은 고개와 오른발을 까딱까딱하도록 했다.WalkingNoGold는 카트에 골드 없이 걷는 동작만 만들었다. 골드 없이 걷는 애니메이션을 복사하고 Animator로 가서 드래그한다.이렇게 하면 똑같은 애니메이션을 복제하여 일부만 수정할 수 있다. Gold 오브젝트를 ShopCart 안에 넣고 비활성화 상태로 둔 후WalkingWithGold 애니메이션에 Is Active를 추가하고 체크해 두면 된다. 애니메이션 파라미터를 Bool 타입으로 WalkingNoGold, WalkingWithGold를 만든다.MakeTransition을 통해 Idle과 Walking을 연결한다.Exit Time 등은 0으로 하고 Fixed D.. 2025. 1. 20. 이전 1 2 3 4 5 ··· 7 다음