내일배움캠프 Unity 9기/TIL 27

[Unity9기 / 첫번째 프로젝트] - 카드게임

첫 팀 프로젝트는카드게임 만들기였다. 내가 배정된 19조는 추가학습조여서팀 프로젝트 없이 지급받은 강의만 들으면 됐다. 초반 의욕이 넘칠때라'나도 빨리 팀 프로젝트를 경험해보고 싶다!'는 생각이 있었는데 마침 마음이 맞는 팀원분이 계셔서둘이서 프로젝트를 진행했다. 프로젝트마다 필수과제 / 도전과제 를 주는데도전과제는 다음 3가지였다.1. 사운드 삽입하기2. 게임에 연출을 더해보기3. 스테이지 or 난이도 추가하기3개 모두 구현완료했다!와이어프레임 와이어프레임은강의에 나온것과 구조가 크게 다르지 않았기 때문에 금세 만들었다. 아이디어 공유 & 개발 우선순위 정하기 팀 노션에 아이디어를 공유하고괜찮은 것들을 골라서개발 우선순위를 정했다. 역할분담 레벨 밸런스는 팀원분이 잡아주셨다.각자 맡아서 할 일을 ..

[Unity/TIL/250814] 내배캠 Unity9기 수료!

2025.4.7 ~ 25.8.14 8.14.금요일에 내배캠 일정이 마무리됐다. 시간 참 빠르다~ 우리 팀 부스.생각보다 더 많은 분들이 찾아와서 플레이해주셨다. 감사하게도. 지금 생각해도 최종프로젝트로 내가 원하는 게임을 만들 수 있었다는 건 정말 큰 행운이었다.(원하는 게임을 만들어도 이렇게 힘든데...!!) 기대도 안했는데(뻥)최종 1위를 했다!!!!!캬... 단상에 올라가서 소감도 말했다. 뭔말했는지는 긴장해서 기억도 안남ㅋ 2달동안 정말 힘들었지만그만큼 느낀것도 참 많다.열정적인 팀원들과 함께 할 수 있었던 것에 감사하다. 4개월 언제가나 했는데벌써 끝나다니. 코딩 잠 코딩 잠 코딩을 반복하다보니시간이 어떻게 흘렀는지도 모르겠다. 잘 버텼다!! 내배캠 Unity9기 끝!!

[Unity/TIL/250721] - 개념들 정리하기

Mathf.FloorToInt소수점 이하를 버리고 가장 가까운 작은 정수로 변환int result = Mathf.FloorToInt(3.9f); // result = 3 Mathf.Abs절대값으로 반환Mathf.Abs(-5) // 결과:5🟨 거리계산할 때 썼다.if (Mathf.Abs(transform.position.x - target.x) public bool IsPlaying => soundSource.isPlayingsoundSource가 Play되고 있을 때 true. 아니면 false.if(IsPlaying){ //행동 }🟨 사운드트리거에 많이 썼던 코드다. 아주 편했음. public System.Action OnClueHidden쓸때는 +, -로 구독, 해제를 해준다.pub..

[Unity/TIL] - 인벤토리 만들기

더보기퍼즐게임만드는 중.퍼즐을 풀다보면 단서를 모으게 되는데 이걸 보관할 수 있는 인벤토리를 만들어야 함.화면 하단 좌측에 숫자키 형태의 인벤토리를 만들기로 결정.인벤토리(단서 수집함) 만들기 1. 단서를 획득시 인벤토리에 표시2. 인벤토리는 숫자 키 1-4로 사용가능3. 숫자 키 입력시 단서 상세내용 확인 가능 ClueData를 ScriptableObject로 만듬. Inventory.csusing System.Collections;using System.Collections.Generic;using TMPro;using Unity.VisualScripting;using UnityEngine;public class Inventory : Singleton{ public List collectedC..

[Unity/TIL] - QTE시스템, 프롬프트 만들기

QTE시스템 public RectTransform needle; // 바늘 public float rotateSpeed = 90f; // 초당 회전 속도(도) public KeyCode inputKey = KeyCode.Space; public Image successZone; public float minAngle = 120f; // 추후 매개변수로 변경 public float maxAngle = 150f; // 추후 매개변수로 변경 private float currentAngle = 0f; // 현재 각도. (바늘은 시작시 0도, 최대로 갔을 때 -180도 (반원)) private bool isRunning; public void ..

[Unity/TIL] - 델리게이트/Action/Func/람다

델리게이트는 함수를 변수처럼 저장하고 실행형식접근제한자 delegate 반환형 델리게이트이름(); 핵심특징- 메서드를 저장하고 나중에 실행할 수 있다.- +=, -= 로 여러 개의 함수 연결 가능- ?.Invoke()로 null체크 후 안전 실행 가능예시상황- 버튼 클릭 시 연결된 함수 실행- 이벤트 시스템 구현- 콜백 함수 처리 1. 델리게이트 // 선언 및 초기화public delegate void TestDel1(); public delegate void TestDel2(int num1); public delegate void TestDel3(int num1, int num3); public TestDel1 testDel1; public TestDel2 testDel2; public TestDel..

[Unity/TIL] - 싱글톤

1. 싱글톤. 왜 쓰나요?특정 클래스가 게임 전체에서 단 하나만 존재하도록 보장하고,전역 접근이 가능하도록 만들기 위해. 대표적으로 GameManager, SoundManager, UIController 등에 사용. 2. 기본 싱글톤 패턴using UnityEngine;public class GameManager : MonoBehaviour{ public static GameManager Instance { get; private set; } private void Awake() { // 인스턴스가 이미 존재하면 이 오브젝트는 제거 if (Instance != null && Instance != this) { Destroy(game..

[Unity/TIL] - UI Image 깨지지 않게 만들기

이런 UI창을 만들고 싶었다. 이미지 사이즈는 100*100 이미지 Inspector에서 Texture Type을 Sprite로 바꿔야 UI 이미지로 쓸 수 있다. 1920*1080 화면에이미지를 놓고 늘리니 깨진다. 이미지 크기가 작아서 그런가..? 이번엔 1122*1060 사이즈의 이미지를 가져와서 넣어봤지만그래도 깨진다.모서리 선의 굵기가 균일하지 않고 늘어진다. 깨지지 않고 UI 이미지로 쓰는 법 Image 컴포넌트에서Image Type를 Sliced로 설정. 이미지의 Inspector로 와서 Sprite Editor 를 누른다. 초록 점을 옮겨 이미지를 9등분으로 슬라이스해준다.* 가운데 부분에 올 이미지는 연결했을 때 자연스러워 보이기 위해 되도록 아무런 장식이 없는 것으로 하는 것이..

[Unity/TIL] - GetComponent

더보기3번째 팀프로젝트 진행하면서 가장 많이 본 오류.NullReferenceException: Object reference not set to an instance of an object값이 없다. Null이다. 연결이 안되어 있다. 오류를 해결하다보니 내가 GetComponent를 이상하게 쓰고 있다는 걸 알게됐다. 그래서 쓰는 TIL.===== GetComponent()이 스크립트가 붙어있는 게임오브젝트에서 컴포넌트 T를 찾는다. (없으면 null 반환)Rigidbody2D rb = GetComponent(); GetComponent(문자열)안전성 떨어져서 거의 안 씀. 되도록이면 제네릭 방식 ()을 써야 함Component comp = GetComponent("PlayerController");..