πŸ”½ SOLID 원칙 κ΄€λ ¨λœ λ‚΄μš©μ€ μ•„λž˜μ—μ„œ πŸ”½

231208

231215

LayerMask

μœ λ‹ˆν‹°μ—μ„œ λ ˆμ΄μ–΄μ— λŒ€ν•œ 처리λ₯Ό 훨씬 효율적으둜 ν•˜λŠ” λ°©λ²•μœΌλ‘œ λ ˆμ΄μ–΄λ§ˆμŠ€ν¬λ₯Ό ν™œμš©ν•©λ‹ˆλ‹€.

μœ λ‹ˆν‹°μ—μ„œλŠ” 총 32개(0~31)의 λ ˆμ΄μ–΄λ₯Ό ν™œμš©ν•  수 있으며, 이λ₯Ό ν•œλ²ˆμ— μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ μ •μˆ˜ν˜• λ³€μˆ˜μ˜ 각 λΉ„νŠΈ(32λΉ„νŠΈ)λ₯Ό ν• λ‹Ήν•˜μ—¬ μ²˜λ¦¬ν•©λ‹ˆλ‹€. 1개의 λ³€μˆ˜λ₯Ό μ—¬λŸ¬ 개의 boolκ°’μ²˜λŸΌ μ²˜λ¦¬ν•˜λŠ” 방법!

예λ₯Ό λ“€μ–΄, μΉ΄λ©”λΌμ—μ„œ νŠΉμ • λ ˆμ΄μ–΄μ— μžˆλŠ” 객체만 μ΄¬μ˜ν•˜λŠ” Culling Maskλ₯Ό μƒκ°ν•΄λ΄…μ‹œλ‹€. 이λ₯Ό μ΄λ ‡κ²Œ κ΅¬ν˜„ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

// 1λ°”μ΄νŠΈμΈ bool둜 μ €μž₯ν•˜λŠ” μ˜μ‚¬(pseudo)μ½”λ“œ
bool[] layerList;
foreach(bool i in LayerList){ // bool : 1λ°”μ΄νŠΈ
	if(i) Render();
}

ν•˜μ§€λ§Œ μ΄λ ‡κ²Œ ν•˜λŠ” 경우, 32개의 데이터λ₯Ό μ €μž₯ν•  λ•Œ 32λ°”μ΄νŠΈκ°€ ν•„μš”ν•˜λ©°, 32개의 비ꡐ연산을 ν•˜κ²Œ λ˜μ–΄ 맀우 λΆˆν•„μš”ν•˜κ²Œ μ—°μ‚°λŸ‰μ΄ 컀질 수 μžˆμŠ΅λ‹ˆλ‹€.

κ·Έλž˜μ„œ 이λ₯Ό 2μ§„λ²•μœΌλ‘œ ν‘œν˜„ν•˜μ—¬ 훨씬 더 νŽΈλ¦¬ν•˜κ²Œ 효율적으둜 μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

즉, ν•˜λ‚˜μ˜ 큰 μˆ˜μ— μ—¬λŸ¬ 개의 0κ³Ό 1 값을 μ €μž₯ν•˜λŠ” 기법이라고 μƒκ°ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€.

싱글톀

싱글톀 νŒ¨ν„΄μ€ ν•œ 개의 μΈμŠ€ν„΄μŠ€λ§Œ μƒμ„±ν•˜κ³ , μ–΄λ””μ„œλ“  κ·Έ μΈμŠ€ν„΄μŠ€μ— μ ‘κ·Όν•  수 μžˆλŠ” λ””μžμΈ νŒ¨ν„΄μž…λ‹ˆλ‹€.