2024.09.07 (ํ )
[ ๐ฅ๏ธ Client Part. ]
๐น๏ธ ์ ๋ํฐ์ ์๋ช ์ฃผ๊ธฐ (Lifecycle)
https://docs.unity3d.com/kr/2023.2/Manual/ExecutionOrder.html
์ด๋ฒคํธ ํจ์์ ์คํ ์์ - Unity ๋งค๋ด์ผ
Unity ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ฉด ์ฌ์ ์ ์ง์ ํ ์์๋๋ก ์ฌ๋ฌ ๊ฐ์ ์ด๋ฒคํธ ํจ์๊ฐ ์คํ๋ฉ๋๋ค. ์ด ํ์ด์ง์์๋ ์ด๋ฌํ ์ด๋ฒคํธ ํจ์๋ฅผ ์๊ฐํ๊ณ ์คํ ์ํ์ค์ ์ด๋ป๊ฒ ํฌํจ๋๋์ง ์ค๋ช ํฉ๋๋ค.
docs.unity3d.com
Unity์์์ ๋ํ์ ์ธ ํจ์๋ค์ ์คํ ์์
๐น Awake (์ฒซ Scene ์์ ์)
- ์ค๋ธ์ ํธ์ ์ ์ธ์คํด์ค๊ฐ ์์ฑ๋ ๋ ๊ฐ์ฅ ๋จผ์ ํธ์ถ
- ํ ์ฌ ๋ด์์ ์ค๋ธ์ ํธ๋ง๋ค ์ค์ง ํ ๋ฒ๋ง ์คํ๋จ
- ๋นํ์ฑํ๋ ์ค๋ธ์ ํธ๋ ํธ์ถ๋์ง ์์, ๋จ ์คํฌ๋ฆฝํธ๋ง ๋นํ์ฑํ๋ ๊ฒฝ์ฐ์ ํธ์ถ๋จ
๐น Start (์ฒซ ํ๋ ์ ์ ๋ฐ์ดํธ ์ )
- ์คํฌ๋ฆฝํธ ์ธ์คํด์ค๊ฐ ํ์ฑํ๋ ๊ฒฝ์ฐ, ์ฒซ ํ๋ ์ ์ ๋ฐ์ดํธ ์ด์ ์ ํธ์ถ๋จ
- ๋ชจ๋ Awake๊ฐ ๋๋ ํ ์คํ๋จ
- ์๋ํฐ ์คํ ์ดํ ์ด๊ธฐํ ๋จ๊ณ์ ์ฃผ๋ก ์ฌ์ฉํจ
๐น Update
- ๋งค ํ๋ ์๋ง๋ค ํ ๋ฒ ํธ์ถ
- ๊ฒ์ ๋ก์ง ๋๋ถ๋ถ์ด ์ด ์์์ ์ฒ๋ฆฌ๋จ. ํ๋ ์ ์ ๋ฐ์ดํธ๋ฅผ ์ํ ์ฃผ์ ์์ ํจ์์
- ๋๋ฐ์ด์ค ์ฑ๋ฅ์ด๋ ์ต์ ํ ์ํฉ์ ๋ค๋ผ framerate๊ฐ ๋ณํ๊ธฐ์ ํจ์ ํธ์ถ ์๊ฐ์ด ๋งค๋ฒ ๋ฌ๋ผ์ง ์ ์์
๐น OnDisable(๋๋ผ ๋) & OnDestroy(์ค๋ธ์ ํธ Destroyํ ๋)
- OnDisable: ๊ฒ์ ์ค๋ธ์ ํธ๋ ์คํฌ๋ฆฝํธ๊ฐ disabled ๋๊ฑฐ๋ inactive ๋ ๋ ํธ์ถ
- OnDestroy: ์ค๋ธ์ ํธ ์์กด ๊ธฐ๊ฐ์ ๋ง์ง๋ง ํ๋ ์์ด ์ ๋ฐ์ดํธ๋ ํ ํธ์ถ
๐ ์ํ ๋จธ์ (FSM: Finite State Machine)
๊ฒ์ ์บ๋ฆญํฐ์ ์์ง์(์: Idle → Move → Attack)์ฒ๋ผ ๋์์ ์ํ ๊ธฐ๋ฐ์ผ๋ก ์ ์ดํ ๋ ์ฌ์ฉ๋๋ ์ค๊ณ ํจํด
- State: ๊ฐ์ฒด์ ๋์์ ์ํ๋ก ๋ถ๋ฅ (Idle, Move, Attack ๋ฑ)
- Transition: ์ํ ๊ฐ ์ ํ ์กฐ๊ฑด ์ ์(์ํ์ ์ํ ์ฌ์ด์ ์ ์ด๋ฅผ ์ ์ํจ ex. Idle์์ Move๋ก ์ํ๊ฐ ์ ์ด๋ ๋์ ์กฐ๊ฑด ์ ์)
- Action: ๊ฐ ์ํ์์ ์คํํ ๋์ ์ ์ (ex. Attack ์ํ์์ ์ํํ ๋์์ ์ ์)
๐พ ๋ฐฉ์นํ ๊ฒ์ ๋ง๋ค๊ธฐ
2025.04.24 - [๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ] - [ Unity2D ] ๋ฐฉ์นํ ๊ฒ์ - Background ์ค์
[ Unity2D ] ๋ฐฉ์นํ ๊ฒ์ - Background ์ค์
SJCE ์คํฐ๋์์ ์งํํ๋ ๋ฐฉ์นํ ๊ฒ์ ๋ง๋ค๊ธฐ์ ๋ฐฐ๊ฒฝ์ 3๊ฐ์ ์ด๋ฏธ์ง๊ฐ ๋ฐ๋ณตํด์ ๋ฑ์ฅํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ ๊ฒ์ด๋ค. ์ด๋ฒ ์ฃผ์ฐจ์ ๋ฐฐ์ด ๊ธฐํ ๊ฐ๋ ์ ๊ดํ ๊ธ์ ์๋์์ ํ์ธํ ์ ์๋ค. 2025.04.24
record-coding53.tistory.com
โฑ๏ธ ๋ธํ ํ์ (Time.deltaTime)
ํ๋ ์ ์๋์ ๋ฐ๋ผ ์ค๋ธ์ ํธ ์์ง์ ์๋๊ฐ ๋ฌ๋ผ์ง๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๊ฐ์ผ๋ก ๋ง์ง๋ง ํ๋ ์์ผ๋ก๋ถํฐ ํ์ฌ ํ๋ ์๊น์ง์ ๊ฐ๊ฒฉ์ ์๋ฏธํ๋ค. ์ฆ, ์ด์ ํ๋ ์์ด ์๋ฃ๋๊ธฐ๊น์ง ๊ฑธ๋ฆฐ ์๊ฐ์ด๋ค. ํ๋ ์ ๋จ์๋ก ๊ฒฐ๊ณผ๊ฐ ๋์ถ๋๋ ์ด ๊ฒ์์์, ๊ธฐ๊ธฐ ์ฑ๋ฅ ๋ฑ์ ๋ฐ๋ผ A๋ 10fps(frames per second), B๋ 60fps๋ก ์์ ์ ์ํํ๋ค๋ฉด A๊ฐ ์ ์ด์์ด 1์ด์ 10m๋ฅผ ๋ ์๊ฐ๋ ๋์ B๊ฐ ์ ์ด์์ 1์ด์ 60m๋ฅผ ๋ ์๊ฐ๊ฒ ๋์ด ๊ณต์ ํ์ง ๋ชปํ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ํ๋ค. ์ด๋ฅผ ์ํด ํ๋ ์ ๊ฐ ์๊ฐ ๊ฐ๊ฒฉ์ธ ๋ธํ ํ์์ ์ ์ฉํ๋ค. ์ฆ, ๋ธํ ํ์์ ๊ณฑํ์ฌ ์ด๋ ๊ฑฐ๋ฆฌ ๋ฑ์ ์ฐ์ฐํ๋ ๊ฒ์ด๋ค.
๐ Enum (์ด๊ฑฐํ)
C#์์ ์ด๊ฑฐํ ์์๋ฅผ ๊ฐ๋ ์ฑ ์ข๊ฒ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ
enum GameState { Idle, Move, Attack }
GameState currentState = GameState.Move;
- ๊ธฐ๋ณธ์ ์ผ๋ก enum์ ์์ ๊ฐ์ ๋ด๋ถ์ int ํ์์ด๋ฉฐ, 0๋ถํฐ ์์ํด 1์ฉ ์ฆ๊ฐํ๋ค
- ์ฐ๊ฒฐ๋ ์์ ๊ฐ์ ๋ช ์์ ์ผ๋ก ์ง์ ํ ์๋ ์๋ค
enum ErrorCode: ushort
{
None = 0,
Unknown = 1,
ConnectionLost = 100,
OutlierReading = 200
}
- ๋ช ์์ ๋ณํ์ ํตํด ์ด๊ฑฐํ ํ์๊ณผ ๊ธฐ๋ณธ ์ ์ ํ์์ ๋ณํํด ์ฌ์ฉํ ์๋ ์๋ค.
public enum StateBtn
{
None = 0,
Btn1 = 1,
Btn2 = 2,
Btn3 = 3,
}
public StateBtn sBtn = StateBtn.None;
-----
case StateBtn.Btn3:
{
Debug.Log("Btn3");
}break;
case(StateBtn)3:
{
Debug.Log("Btn3");
}break;
# ์ด ๊ฒฝ์ฐ, case ๊ตฌ๋ฌธ ๋ ๊ฐ์ง๋ ๋์ผํ ์๋ฏธ์ด๋ค.
๐ ๋๋ฒ๊น
๋๋ฒ๊น (Debugging) : ํ๋ก๊ทธ๋๋ฐ ๊ณผ์ ์ค์ ๋ฐ์ํ๋ ์ค๋ฅ๋ ๋น์ ์์ ์ธ ์ฐ์ฐ ์ฆ, ๋ฒ๊ทธ๋ฅผ ์ฐพ๊ณ ์์ ํ๋ ๊ฒ
- ์ค๋จ์ (Breakpoint) ์ค์ /ํด์ : F9 (์กฐ๊ฑด๋ถ ์ค์ ๋ ๊ฐ๋ฅ: ์์ฑ๋ ์ค๋จ์ ์์ ์ฐํด๋ฆญ-์กฐ๊ฑด)
- ๋๋ฒ๊ทธ ๋ชจ๋ ์คํ: F5 (์ค๋จ์ ์ ๋ฐ๊ฒฌํ๋ฉด ํด๋น ๋ผ์ธ ์คํ ์ง์ ์ ์ค๋จ, ํ๋ฒ ๋ ๋๋ฅด๋ฉด ๋ค์ ์ค๋จ์ ์ด ๋ํ๋๊ฑฐ๋ ์ข ๋ฃ ๋๊ธฐ ์ ๊น์ง ์คํ)
- ํ ๋จ๊ณ์ฉ ์คํ(ํ๋ก์์ ๋จ์ ์คํ): F10, F11(ํ ๋จ๊ณ์ฉ ์คํํ๋ค๊ฐ ํจ์ ๋ง๋๋ฉด ํจ์ ์์ผ๋ก ์ง์ )
- ๋๋ฒ๊น ์ข ๋ฃ: Shift + F5
๋๋ฒ๊น ๋ฐฉ๋ฒ
- ํ๋ก๊ทธ๋จ์ ๋ช ๊ฐ์ง ๋จ๊ณ๋ก ๋๋์ด ๋จ๊ณ๋ณ๋ก ์ฒดํฌ
- ์ค๋ฅ๊ฐ ์๋ ๋ฒ์๋ฅผ ์ขํ ๋๊ฐ ๊ฒ
- ์ ์ถ๋ ฅ์ด ์ ์์ ์ผ๋ก ๋์๋์ง ๋ฐ๋ณต๋ฌธ์ ์์๊ณผ ๋ ํจ์์ ์์๊ณผ ๋ ๋ถ๋ถ ๋ฑ ์ฃผ์ ์ฝ๋ ์์ฃผ๋ก ์ฒดํฌ
- ์ค๋จ์ ํ์ฉ
[ ๐พ Server Part. ]
๐๏ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค
๐ธ RDB (Relational Database, ๊ด๊ณํ DB)
- ํ(Row)๊ณผ ์ด(Column)์ด๋ผ๋ ์ผ์ข ์ ํ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
- ๋ฐ์ดํฐ ์ข ์์ฑ์ ๊ด๊ณ(Relation)๋ก ํํ๋จ
- ํ ํ ์ด๋ธ์ ์๋ ๋ชจ๋ row๋ ๊ฐ์ ๊ธธ์ด์ colum์ ๊ฐ์ง.
- ์ด column์ ๊ตฌ์กฐ์ ๋ฐ์ดํฐ์ ๊ด๊ณ๊ฐ ํ ์ด๋ธ ์คํค๋ง(Schema)๋ก ์ฌ์ ์ ์๋จ
- ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํจ
- SQL(Structured Query Language) ์ฌ์ฉ
- ์: MySQL, PostgreSQL, MSSQL(Microsoft SQL Server), MariaDB, Oracle, Database, Amazon Aurora ๋ฑ
๐ธ NoSQL (Not only SQL)
- ์ ํต์ ์ธ SQL ๊ธฐ๋ฐ ๊ด๊ณํ ๋ชจ๋ธ ์ธ์ ๋ค๋ฅธ ํํ์ ๋ฐ์ดํฐ ์ ์ฅ ๊ธฐ์
- RDB์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํ ๋ฐ์ดํฐ ์ ์ฅ์์ ์๋ก์ด ํํ
- ์์ธ๋ ์กด์ฌํ๋ ๋ณดํต ๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ผ๊ณ ๋ ๋ถ๋ฆ
- ์ ์ฐํ ์คํค๋ง(๋ช ์์ ์ธ ์คํค๋ง ์์ด ๋์), ์ํ ํ์ฅ ์ฉ์ด, ๋ถ์ฐ ์ ์ฅ
- ์: MongoDB, Redis, HBase ๋ฑ
Redis ํน์ง
- Key-Value ํ์์ผ๋ก ๊ฐ ์ ์ฅ
- ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ์ผ๋ก ์๋๊ฐ ๋น ๋ฆ
- ๋ฐ์ดํฐ ํ๋ฐ์ ๋ฌธ์ ๋ ๋ฐฑ์ ์ผ๋ก ๋ณด์ ๊ฐ๋ฅ
๐ Redis ๊ธฐ์ด ๋ช ๋ น์ด
SET key value # key์ value ์ ์ฅ
GET key # key๊ฐ์ ํด๋นํ๋ value ์กฐํ
DEL key # ํค ์ญ์ (์กด์ฌํ์ง ์๋ ํค๋ ๋ฌด์๋จ)
HSET key field value
# ์ง์ ํ hash keyํ์์ field์ value ์ ์ฅ (ํ๋ ๊ฐ์ด ์์ ๊ฒฝ์ฐ ๋ฎ์ด์ฐ๊ณ ํค๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด ์ ํด์ํค ์์ฑ)
HKEYS key # ํ๋ ๋ชฉ๋ก ์กฐํ
KEYS * # ๋ชจ๋ ํค๋ฅผ ํ์ธ (KEYS pattern ๊ผด๋ก *, ?, [a-c] ๋ฑ glob-style pattern์ ๋ชจ๋ ์ฌ์ฉํ ์ ์์)
- Redis์ hash๋ ์์ key-value ์๋ค์ ๋ชจ์
- field๋ hash key์ sub key ๊ฐ๋