Today I Learned : Light 컴포넌트 게임내 조명을 조절하는 컴포넌트 속성 Type: 조명의 유형 Spot : 특정 방향으로 빛을 방출하는 원뿔형. 스포트라이트 Point : 특정 지점에서 모든 방향으로 빛이 나가는 조명. 전등같은 조명의 광원 Directional : 모든 방향에서 평행하게 떨어져 오는 빛. 해, 달과같은 광원 Area (baked only) : 평면의 직사각형 형태의 광원. 실내조명 Color: 조명의 색상 Mode: 조명 모드 Realtime : 조명이 실시간으로 계산됨. 렌더링 프레임마다 동적으로 빛과 그림자 생성 Mixed : 일부는 미리 계산. 정적인 빛은 미리 계산되어 그림자맵에 저장된다. Baked : 모든 조명이 미리 계산되어 텍스처 맵에 저장. 실시간계산없..
Today I Learned : 타 세션들의 강의를 시청하였으며 스탠다스 세션을 통해 강의된 내용을 통해 경험으로만 알고있던 것을 정리한다. 디버깅 자동(A) 변수 창 실행중인 함수나 코드블럭에서 자동으로 활성화된 값을 표기 현재 스코프에 속한 변수들을 실시간으로 볼 수 있다. 지역(L) 변수 창(하단엔 로컬로 표기) 현재 실행중인 함수나 블럭의 지역변수를 표기 조사식(W) 특정한 변수나 표현식을 등록하면 그 값을 추적해주는 창 직접 실행(I) 커맨드형식으로 디버깅중에 직접 값을 입력하거나 변경, 특정 코드블록을 실행 가능하다 조건부 중단점 중단점에 우클릭하여 조건을 부여하며, 해당 조건이 충족될 경우 코드진행이 중단된다
Today I Learned : Delegate Delegate는 메서드에 대한 참조를 저장하고 호출하는 데 사용 Unity에서 주로 이벤트 핸들러를 등록하거나 콜백을 정의하는 데 활용 // 델리게이트 정의 public delegate void MyDelegate(string message); public class ExampleClass : MonoBehaviour { // 델리게이트 인스턴스 생성 public MyDelegate myDelegate; void Start() { // 델리게이트에 메서드 등록 myDelegate += PrintMessage; // 델리게이트 호출 myDelegate("Hello, Delegate!"); } void PrintMessage(string message) { ..
Today I Learned : Linq int[] slicedArray = array.Skip(start).Take(end - start).ToArray(); Skip : 컬렉션에서 지정된 개수의 요소를 건너뛰는 데 사용 Take : 컬렉션에서 지정된 개수의 요소를 선택하는 데 사용 오브젝트 이동 제한 // 인풋으로 들어온 좌표 Vector2 targetPos = _camera.ScreenToWorldPoint(value.Get()); // 사이드로 가능경우 화면 밖으로 나가지 않도록 보정 // 1. 해당 오브젝트의 스케일의 반지름을 구해서 연산 범위안에 적용, 최대 이동거리 안쪽에 위치하게 한다. // 이 경우 오브젝트의 스케일이 달라도 모두 적절하게 보정된다. targetPos.x = Mathf.C..
Today I Learned : 알고리즘 풀이 using System.Text; public class Solution { public string solution(string s, int n) { StringBuilder answer = new StringBuilder(); foreach (char c in s) { if (char.IsLetter(c)) { char baseChar = char.IsUpper(c) ? 'A' : 'a'; char encryptedChar = (char)(((c - baseChar + n) % 26) + baseChar); answer.Append(encryptedChar); } else { answer.Append(c); } } return answer.ToString..
Today I Learned : ObjectPool 오브젝트 풀링은 GameObject를 반복적으로 생성하고 파괴하는 데 따르는 부하를 줄여줌으로써 성능을 향상시킵니다. 오브젝트를 재사용함으로써 불필요한 메모리 할당 및 해제를 피하고, 메모리 사용의 효율성을 높입니다. 빈번한 오브젝트 생성과 파괴는 가비지 컬렉션의 부하를 초래할 수 있습니다. 오브젝트 풀링은 오브젝트를 유지하고 재사용함으로써 가비지 컬렉션을 줄입니다. // 적당히 생략된 코드 public class FruitManager : MonoBehaviour { [SerializeField] private GameObject[] fruitPrefabs; private List[] objectPool; private const int objectP..
Today I Learned : Github Desktop Rebase 대상 브랜치를 기준으로 Patch를 만들고 이를 내 브랜치로 적용시킨다. CherryPick 선택된 단일 푸시만 가져와서 내 브랜치에 적용한다. LFS 깃허브는 기본적으로 한번에 100MB정도만 올릴 수 있다. LFS를 사용하면 무료사용자는 최대 1기가 까지 한번에 올릴 수 있다. 깃허브 데스크탑에서 레포지토리를 생성하는 경우 처음에 LFS 를 사용할지 물어본다. 유니티 파일들 중 머지가 불가능한 것들이 있기 때문에 작업시 유의할 필요가 있다. Scene 전환 씬 전환시에 초기화가 필요한 경우 빈 오브젝트를 생성해서 스크립트를 넣고 awake()에서 Init할 수 있다. 이게 정석적인 방법인지는 모르겠다. 배열 int [ , ] : ..
Today I Learned : 1. 알고리즘 (프로그래머스)를 풀다가 타임아웃 이슈가 발생 기본 풀이는 O(n^3) 인데 이걸 낮추기 위해 Array.Sort()를 사용(최고 O(2n^2)로 판단)하였는데 일부 예시에서 타임아웃이 발생. Sort 부분으로 추측. 삼중 for문은 정상적으로 작동함. 문제에서 테스트케이스가 어떻게 들어오는건지 궁금하다. // O(n^3) public class Solution { public int solution(int[] number) { int answer = 0; int n = number.Length; for (int i = 0; i < n - 2; i++) { for (int j = i + 1; j < n - 1; j++) { for (int k = j + 1;..
Today I Learned : GetLength GetLength 메서드는 다차원 배열에서 특정 차원의 길이를 반환하는 메서드입니다. 배열의 특정 차원에 대한 길이를 가져올 수 있습니다. 다차원 배열에서는 각 차원마다 길이가 다르기 때문에, GetLength 메서드를 사용하여 특정 차원의 길이를 확인할 수 있습니다. int[,] arr = new int[3, 4]; int rows = arr.GetLength(0); // rows에는 3이 저장됨 int columns = arr.GetLength(1); // columns에는 4가 저장됨 유니티 미숙으로 인한 스파게티 유니티와 코드 사이에 컨트롤이 필요한데 강의를 통해 배운 구조는 너무 멀리간듯 아직은 익숙해지지 않아 어느위치에서 스크립트를 만들어서 컴..
Today I Learned : 1. Action과 Invoke() Action은 C#에서 델리게이트의 일종으로, 메서드나 함수를 나타내는 타입이다. .Invoke() 메서드는 델리게이트를 호출하는 방법 중 하나이다. 2. 애니메이션 즉시발동 Has Exit Time : 현재 재생중인 애니메이션이 완전히 종료된 후에 다음 애니메이션으로 전환가능하도록 한다. 체크 해제시 Transition Duration 만큼의 시간에 걸쳐 전환이 이루어진다. Transition Duration : 애니메이션 전환이 이루어지는 데 걸리는 시간 애니메이션을 즉시 전환하려면 "Has Exit Time"을 체크해제하고 "Transition Duration"를 0으로 설정하면 된다. Has Exit Time이 활성화 되어있으면 ..