| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 |
- Redis
- Mathf.Clamp
- 유니티 Collision
- BoundsInt
- 경영시뮬레이션
- c++ 문자열 자르기
- 유니티 머신러닝
- 깊이 우선 탐색
- LayerMask
- Raycast
- TextMeshPro
- 유니티 한글 폰트
- 인프런
- 오브젝트 풀링
- ML-Agents
- 너비 우선 탐색
- 이진트리
- 유니티 리소스매니저
- git-lfs
- 유니티
- unity
- 유니티 오브젝트 풀링
- LookRotation
- c++
- 유니티 InputManager
- InputManager
- LFS
- 유니티 ResourceManager
- 유니티 시야 가림
- 알고스팟
- Today
- Total
목록전체 글 (113)
무민은귀여워
유니티 TextMeshPro 기본 폰트를 사용하면 한글이 □ 로 깨진다.한글 폰트를 추가해서 사용하자.1. 사용 가능한 한글 폰트 찾기사용 가능한 폰트 파일을 다운로드 받는다. (ex. 눈누라는 사이트 이용했다.)무료 폰트라면 상업이용 가능한지 확인이 필요하다. 특히 임베딩 사용 가능한지 확인 필수.https://noonnu.cc/ 눈누상업적 이용 가능한 한글 폰트를 쉽게 찾아보세요.noonnu.cc 2. TextMeshPro 패키지 설치TextMeshPro 패키지가 없다면 Hierarchy에서 UI -> Text - TextMeshPro 로 패키지를 설치한다. 3. 폰트 애셋 만들기Window -> TextMeshPro -> Font Asset Creater 선택 Source Font에 다운로드 받아놓..
1️⃣ Redis는 왜 검색이 O(1)인가?Redis가 O(1)인 이유는👉 메모리 기반 + 해시 테이블 사용 + Key-Value 직접 접근 때문입니다.2️⃣ Redis vs 일반 DB 핵심 차이구분RedisMySQL / PostgreSQL 저장 위치RAMDisk + Cache기본 자료구조Hash TableB-Tree / B+TreeKey 검색O(1)O(log N)데이터 크기작음큼목적초고속 조회정합성, 영속성3️⃣ Redis가 O(1)인 이유 (구조)🔹 Redis 내부 구조Redis의 기본 Key 조회는 해시 테이블입니다. key → hash(key) → bucket → value key를 해시 함수로 변환배열 인덱스로 바로 접근트리 탐색 없음➡ 평균 시간복잡도: O(1)4️⃣ 왜 RDB는 O(log..
1️⃣ HashSet이란?중복을 허용하지 않는 집합(Set) 자료구조내부적으로 해시 테이블 사용값(Value)만 존재, Key/Value 쌍 아님순서 보장 ❌빠른 포함 여부 검사에 특화HashSet ids = new HashSet(); ids.Add(1); ids.Add(1); //❌ 중복 무시2️⃣ 시간 복잡도 (평균)연산메서드시간 복잡도추가Add(T)O(1)제거Remove(T)O(1)포함 여부Contains(T)O(1)개수CountO(1)전체 순회foreachO(n)초기화Clear()O(n)※ 최악의 경우(충돌 심함) → O(n)3️⃣ HashSet 내부 원리 (간단)Dictionary와 거의 동일한 구조실제 구현은 Dictionary 기반Key = 값Value = 더미👉 그래서 성능 특성이 Dic..
해시테이블이란?키(Key)를 해시 함수로 변환해 값(Value)을 바로 찾는 자료구조 Key ──(Hash Function)──▶ Index ──▶ Value 배열처럼 빠른 접근키는 보통 string, int, enum, struct 등Unity에서는 주로 Dictionary 를 사용2️⃣ C#에서의 해시테이블 종류자료구조제네릭권장 여부Hashtable❌❌ (레거시, Boxing 발생)Dictionary✅✅ (표준)👉 Unity에서는 Dictionary만 사용하면 됨3️⃣ 시간 복잡도평균(이상적인 경우)연산시간 복잡도삽입O(1)삭제O(1)조회O(1)포함 여부O(1)최악의 경우상황시간 복잡도해시 충돌이 많을 때O(n)※ 하지만 C# Dictionary는 충돌을 최소화하도록 잘 설계됨4️⃣ 내부 동작 원리..
1. BoundsInt란? UnityEngine.BoundsInt중심(center) 이 아니라최소 좌표(position) + 크기(size) 로 영역을 정의모든 값이 int(정수) → 셀, 타일, 그리드에 최적화실수 기반 영역인 Bounds와 대응 관계타입좌표 타입용도Boundsfloat물리, 렌더링, 월드 공간BoundsIntintGrid, Tilemap, 셀 영역2. 기본 구조BoundsInt bounds = new BoundsInt( new Vector3Int(x, y, z), // position (최소 좌표) new Vector3Int(sizeX, sizeY, sizeZ) // size );내부 개념position = 최소 좌표 (min) size = 영역 크기 max = position +..
gitlab의 프로젝트를 github로 옮기는 것은 아래 블로그 참고 https://codingdiary99.tistory.com/5 [Git] Gitlab에서 Github로 미러링 설정 💡예전에 프로젝트를 했던 내용이 gitlab에 있는데, 현재는 github를 사용중이라 커밋을 옮기기로 했습니다. 그래서 오늘은 gitlab에서 github로 미러링 설정을 해보도록 하겠습니다. 1. Github에서 토큰 codingdiary99.tistory.com 100mb가 넘는 파일이 있어 lfs 설정이 필요한 프로젝트는, 위 방법처럼 브라우저 상에서만으로는 옮길 수 없다. (마지막에 미러링 시도 버튼을 누르면 error로 끝남) 아래 다른 블로그를 참고하여 git lfs와 BFG Repo Cleaner를 설치 ..
1. 오브젝트 풀링 2-1. Poolable.cs 2-2. PoolManager.cs 1. 오브젝트 풀링 오브젝트 풀링은 개체의 생성 삭제 등으로 인한 메모리 부하를 막기 위해, 미리 준비가 된 개체 풀을 만들어 놓고 필요시에 개체를 꺼내쓰고 사용한 개체는 다시 반납하는 방법이다. 오브젝트 풀링 사용 예 @Pool_Root 를 최상위 루트로 하여, 아래에 개체별 개별 풀 {개체이름}_Root 를 만들어 관리한다. 풀 내에 만들어지는 개체들은 비활성 상태로 들어간다. 사용시에는 풀에서 꺼내어 활성상태로 바꿔준다. (ex. UnityChan_Root 에 있던 UnityChan 개체들이 활성 상태로 위로 올라왔다. 2-1. Poolable.cs Poolable 인 객체들만을 오브젝트 풀링 대상으로 하기 위함 ..