전체 글 50

[내일배움캠프] 빈 딕셔너리 검사~!

발생 사항 - 개표 기능 구현 중, 코루틴에서 finalCounts.Values.Max() 호출시 finalCounts가 비어있으면, InvalidOperationException이 발생하며 개표 코루틴이 멈춤.발생 원인 - 투표 결과가 전송되지 않거나, 한 표도 기록 되지 않아 finalCounts 딕셔너리가 빈 상태로 코루틴이 실행되어 .Max()가 이를 처리하지 못하여 예외가 발생.해결 방안 - ShowBallotAnimation(~) 직후, 개표 코루틴 시작부분에 빈 딕셔너리 검사를 추가해 표가 없을 때는 초기에 데이터가 비어있는 지 먼저 검사한 뒤 처리할 필요가 없으면, yield break; 로 즉시 반환해서 건너뛰도록 함.

Unity 2025.06.18

[내일배움캠프] C# 튜플(Tuple) 개념 정리 / Inventory 예제

✅ 튜플이란?튜플(Tuple)은 여러 개의 값을 하나의 묶음으로 반환하거나 전달할 수 있게 해주는 자료형입니다.(string, int) example = ("이름", 10);이렇게 하면 "이름"과 10을 하나의 데이터처럼 사용할 수 있어요.C# 7.0 이상부터는 이름 붙이기도 가능해서 가독성이 좋아집니다.(string name, int level) player = ("오센치", 10);Console.WriteLine(player.name); // 오센치🧪 Unity에서 직접 사용한 예제: Inventory 클래스public IEnumerable Items => items.Select(pair => (pair.Key, pair.Value));items는 Dictionary입니다.Select에서 각 ..

C# 문법 2025.06.09

[내일배움캠프] 유니티에서 CSV 파일 활용방법 / 데이터 관리 / ScriptableObject와의 차이점

전부터 코드짜면서 늘 "아.. 이거 엑셀로 그냥 목록 적어서 못갖다 놓나..?"라는 생각을 했었다.근데 진짜 그 방식이 있다고 들었었다.그래서 빨리 그 방식을 배워서 써보고 싶었다.일단 충분히 이해를 먼저 하고 차근차근 사용해보려고한다. 엑셀파일은 CSV로 저장하여 불러오는 것인데,유니티에서 CSV파일을 활용하는 것은 데이터 관리를 효율적으로 할 수 있는 방법이라고 한다.또한 아이템, 능력치, 스테이지 등 반복적으로 다뤄야하는 정보를 하드코딩 하지 않고 관리할 수 있다. 그런데 아직 직접 해본 적이 없어서 어려웠고, 튜터님께 여쭤보았다. 그런데 그렇게 어려운 것도 아니고, 별고 없다고 하셨다.코드도 생각보다 간단해서 차근차근 해보려고한다. 📁 Unity : 엑셀 CSV파일 불러오기 1. CSV: C..

Unity 2025.06.04

[내일배움캠프] Rigidbody와 Constraints

🧠 Rigidbody란?Rigidbody는 Unity에서 물리 효과를 적용하고 싶을 때 사용하는 컴포넌트입니다.이를 통해 중력의 영향, 충돌 반응, 물리적 힘 등을 게임 오브젝트에 적용할 수 있습니다.예를 들어, 박스를 실제로 밀거나 떨어뜨리게 하려면 Rigidbody가 필요합니다. 🔒 Rigidbody Constraints란?Constraints는 Rigidbody에 물리적으로 움직일 수 있는 방향(축)을 제한하는 기능입니다.예를 들어, 회전은 막고 싶고 이동만 가능하게 하고 싶을 때 사용됩니다._rigidbody.constraints = RigidbodyConstraints.FreezeRotation;위 코드는 회전을 막고 이동만 가능하게 설정하는 예시입니다. 📌 예시: RotCube..

Unity 2025.05.28

[내일배움캠프] FSM 구조와 Interface 활용

이번에는 Unity에서 퍼즐 게임을 만들면서 FSM 패턴과 Interface를 활용해봤습니다.어려워 보였지만 직접 구현해보니 생각보다 재미있고 유용했습니다! 🎯 FSM이란?FSM(Finite State Machine)은 "정해진 상태들"이 있고, 상황에 따라 상태가 바뀌는 구조를 말합니다.예를 들어, 퍼즐의 상태가 시작 전 → 진행 중 → 해결됨 이런 식으로 변하는 걸 의미해요.각 상태마다 실행할 행동이 정해져 있어서, 상태에 따라 다르게 작동합니다. 🧩 퍼즐 시스템에 FSM 적용하기퍼즐에는 아래처럼 상태를 표현하는 enum을 사용했어요:public enum PuzzleState { None, Active, Failed, Solved}퍼즐의 상황이 바뀌면 이 상태도 함께 바뀌고..

Unity 2025.05.27

[내일배움캠프] 인벤토리 slot을 응용한 간단한 퍼즐 구현

🧩 개요이번에는 인벤토리 시스템에서 사용했던 Slot 구조를 응용해, 간단한 퍼즐 시스템을 만들어보았습니다.퍼즐은 드래그 앤 드롭 방식으로 퍼즐 조각을 옮기며, 슬롯 위치가 정답과 일치하면 해결되도록 구현했습니다. 🔧 사용한 구성요소✅ PuzzlePiece.cs퍼즐 조각을 담당하는 클래스입니다.IDragHandler, IBeginDragHandler, IEndDragHandler 인터페이스를 구현해 드래그 동작을 처리합니다.CanvasGroup을 이용해 드래그 중에는 반투명 처리하고, Raycast 차단을 잠시 해제합니다.드래그가 끝났을 때 슬롯에 제대로 놓이지 않았다면 원래 자리로 돌아갑니다.public void OnBeginDrag(PointerEventData eventData){ _o..

Unity 2025.05.26

[내일배움캠프] ArgumentException 오류 / 이벤트 시스템과 Inspector창 연결 상태

💡 Unity 이벤트 매개변수 오류 해결!오늘 유니티에서 UI 버튼 연결하다가 ArgumentException 예외가 발생했다. 🧩 문제ArgumentException: Object of type 'UnityEngine.Object' cannot be converted to type 'ItemData'.버튼을 클릭해 이벤트가 실행되면서, 이런 오류가 발생하였다. 이 오류는 유니티가 UnityEngine.Object 타입을 ItemData 로 형변환을 시도하다 실패한 상황이었다. 🎯 시도OnClick 관련 함수 자체 문제일까? 의심했고,inspector창에서 버튼 이벤트 슬롯을 보니 매개변수가 None(Object) 상태로 설정돼있었다. ✅ 해결OnClick() 이벤트 슬롯에서 잘못 연결된 Non..

Unity 2025.05.19

[내일배움캠프] Raycast 로 광선 쏘기~

💡 Raycast 란/?광선/ 레이저를 쏘아보는 것이다게임에서 광선(Ray)를 내가 설정한 특정 방향으로 쏴서 무엇과 부딪혔는가를 물리적으로 확인하는것이다 화면을클릭했을 떄, 캐릭터가 앞을 보고 있을 때, 총알이 날라갈떄, 어디 맞았는가? 무엇에 맞았는가 = > 레이캐스트로 알수있다. 🎯 FPS 조준점으로 생각해보는 Raycast 이해FPS 게임에서 많이 접할 수 있는 조준점을 생각하면 이해하기 쉽다. 플레이어가 화면 가운데 있는 조준점에 맞춰 총을 쏘는 게임!실제로는 그 방향으로 Ray를 쏴서 맞은 것이 무엇인지를 감지하는 방식을 쓰고잇다. 조준점, 직선, 광선, 레이저 = Ray의 방향을 시각적으로 표시해줌!진짜 판정(그 직선이 무엇을 맞았는가를 판단) = Raycast로 처리! ✅ 코드로 다시..

Unity 2025.05.16

[내일배움캠프] MVVM 디자인 패턴이란?

MVVM 패턴이란? – 코드의 구조프로그래밍을 하다 보면 점점 코드가 엉키고, UI와 로직이 뒤섞여서 유지보수가 어려워진다.이럴 때 우리가 고민해야 할 건 단순한 "코드 정리"가 아니라, 역할을 분리하는 설계다.그러기 위한 것들이 다양하게 있는데 그중하나가 바로 MVVM 패턴이다. 💡MVVM이란?MVVM은 Model-View-ViewModel의 약자로, 사용자 인터페이스와 로직을 역할에 따라 분리하는 디자인 패턴이다.정확히는 소프트웨어 아키텍처 패턴에 속하며, 화면을 가진 앱이나 프로그램에서 코드를 깔끔하게 구조화하는 데 유용하다. ✅ 각 구성요소 설명구성 요소역할Model앱의 핵심 데이터와 비즈니스 로직. 서버 통신, DB 처리 등 포함View사용자에게 보여지는 화면(UI). 버튼, 텍스트 등 시각적..

Unity 2025.05.15