c# ํ‚ค์›Œ๋“œ ๋ฒˆ์—ญ

ํ”„๋กœํผํ‹ฐ : ์†์„ฑ

๋ธ๋ฆฌ๊ฒŒ์ดํŠธ : ๋Œ€๋ฆฌ์ž

ํŒŒ๋ผ๋ฏธํ„ฐ : ๋งค๊ฐœ๋ณ€์ˆ˜

์ œ๋„ค๋ฆญ : ์ผ๋ฐ˜ํ™”

ํ•„๋“œ : ๋ณ€์ˆ˜

๋ฉ”์†Œ๋“œ : ํ•จ์ˆ˜

์œ ๋‹ˆํ‹ฐ ์ฝ”๋”ฉ ๊ทœ์น™
  1. ๋ณ€์ˆ˜๋ช… ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ์ง“๊ธฐ

  2. ํด๋ž˜์Šค ์ด๋ฆ„์€ ๋Œ€๋ฌธ์ž ์‹œ์ž‘

  3. ์Šคํฌ๋ฆฝํŠธ ์ด๋ฆ„๋„ ๋Œ€๋ฌธ์ž ์‹œ์ž‘

  4. ๋ฉ”์†Œ๋“œ๋Š” ๋Œ€๋ฌธ์ž ์‹œ์ž‘

  5. ํด๋ž˜์Šค ๋‚ด public, protected ๋ณ€์ˆ˜, ํ”„๋กœํผํ‹ฐ๋Š” ์นด๋ฉœํ˜•์‹

  6. ํด๋ž˜์Šค ๋‚ด private ๋ณ€์ˆ˜๋Š” _์–ธ๋”๋ฐ” ์‹œ์ž‘ ์นด๋ฉœํ˜•์‹

  7. ๋งค๊ฐœ๋ณ€์ˆ˜ ์ด๋ฆ„์€ ์นด๋ฉœํ˜•์‹

  8. ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ์ด๋ฆ„ ๋’ค์—” Callback ๋ถ™์ด๊ธฐ

  9. ์ด๋ฒคํŠธ๋‚˜ ์•ก์…˜ ์•ž์—” On ๋ถ™์ด๊ธฐ(ex)OnDeath)

MonoBehaviour ์ƒ์† ๋ผ์ธ

object-Component-Behaviour-MonoBehaviour

object : c# ๊ธฐ๋ณธ ์˜ค๋ธŒ์ ํŠธ

Component : ์ปดํฌ๋„ŒํŠธ, GameObject์— ๋ถ™์„ ์ˆ˜ ์žˆ์Œ. ๋ถ™์–ด์žˆ๋Š” GameObject์— ์ ‘๊ทผ ๋ฐ GameObject ์˜ต์…˜๋“ค ์‚ฌ์šฉ๊ฐ€๋Šฅ

Behaviour : able/disable ๋  ์ˆ˜ ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ

MonoBehaviour : ์ปดํฌ๋„ŒํŠธ๋กœ์จ์˜ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ƒ์†ํ•˜๋Š” ํด๋ž˜์Šค. Awake(), Start(), Update() ๋“ฑ์ด ์ž‘๋™ํ•จ

Awake() vs Start()

Awake() : ์Šคํฌ๋ฆฝํŠธ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋กœ๋“œ๋  ๋•Œ ๋ฐœ๋™, ์Šคํฌ๋ฆฝํŠธ ์ปดํฌ๋„ŒํŠธ๊ฐ€ disabled์—ฌ๋„ ๋ฐœ๋™, ๊ฒŒ์ž„์˜ค๋ธŒ์ ํŠธ๊ฐ€ inactive๋ฉด SetActive()๋  ๋•Œ ๋ฐœ๋™. ์”ฌ์— ์žˆ๋Š” ๋ชจ๋“  ๊ฒŒ์ž„์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์ดˆ๊ธฐํ™” ๋œ ๋‹ค์Œ ๋ฐœ๋™

Start() : ์Šคํฌ๋ฆฝํŠธ๊ฐ€ enabled๋œ ํ”„๋ ˆ์ž„์— ๋ฐœ๋™, Update()๊ฐ€ ๋Œ๊ธฐ ์ง์ „์— ๋ฐœ๋™

public ํ•„๋“œ vs ์ž๋™ ๊ตฌํ˜„ ํ”„๋กœํผํ‹ฐ

๋ฆฌํ”Œ๋ ‰์…˜์—์„œ ๋‹ค๋ฅด๊ฒŒ ๊ตฌ๋™

์ž๋™ ๊ตฌํ˜„ ํ”„๋กœํผํ‹ฐ๋Š” ์‹คํ–‰๋  ๋•Œ ๋‚ด๋ถ€์ ์œผ๋กœ get๋ฉ”์„œ๋“œ set๋ฉ”์„œ๋“œ ๋‹ค ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— public์— ๋น„ํ•ด ๋А๋ฆผ

ํ•„๋“œ vs ํ”„๋กœํผํ‹ฐ

ํ•„๋“œ๋Š” ์ž์‹ ์„ ์ง์ ‘ ์ฐธ์กฐํ•˜๋Š” ref๋‚˜ out ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๋Œ€์ƒ์ด ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ํ”„๋กœํผํ‹ฐ๋Š” ๋ถˆ๊ฐ€๋Šฅ

ํ”„๋กœํผํ‹ฐ๋Š” virtual๋กœ ์ˆ˜์‹ํ•˜์—ฌ ์ƒ์†๋œ ํด๋ž˜์Šค๊ฐ€ ์žฌ์ •์˜ ๊ฐ€๋Šฅ, ํ•„๋“œ๋Š” ๋ถˆ๊ฐ€๋Šฅ

์ธํ„ฐํŽ˜์ด์Šค์—์„œ ํ•„๋“œ๋Š” ์ œ์‹œํ•  ์ˆ˜ ์—†์ง€๋งŒ ํ”„๋กœํผํ‹ฐ๋Š” ์ œ์‹œ ๊ฐ€๋Šฅ

๊ณต๋ณ€์„ฑ๊ณผ ๋ฐ˜๊ณต๋ณ€์„ฑ

ํ˜•๋ณ€ํ™˜์ด ๋งŽ์ด ์“ฐ์ด๊ฒŒ ๋˜๋ฉด์„œ ์—ฌ๋Ÿฌ ์ƒํ™ฉ์—์„œ ์ด๋Ÿฐ ํ˜•๋ณ€ํ™˜์€ ํ—ˆ์šฉํ•˜๊ณ  ์ €๋Ÿฐ ํ˜•๋ณ€ํ™˜์€ ๋ง‰๊ณ  ํ•ด์•ผํ•  ๋•Œ

์ด๋ฅผ ๊ณต๋ณ€์„ฑ๊ณผ ๋ฐ˜๊ณต๋ณ€์„ฑ์ด๋ผ๋Š” ํ‚ค์›Œ๋“œ๋กœ ์ •๋ฆฌ, ๋ถ„๋ฅ˜ํ•จ

์ด๋ฅผ ์ฝ”๋“œ์—์„  in๊ณผ out ์ œ๋„ค๋ฆญ ํ•œ์ •์ž๋กœ ์ˆ˜์‹ํ•จ

๊ณต๋ณ€์„ฑ : out, ์ž์‹ ๊ณผ ์ž์‹์œผ๋กœ๋งŒ ํ˜•๋ณ€ํ™˜ ๊ฐ€๋Šฅ, ์ถœ๋ ฅ(๋ฐ˜ํ™˜ํ˜•, get ๋“ฑ)์— ์‚ฌ์šฉ

๋ฐ˜๊ณต๋ณ€์„ฑ : in, ์ž์‹ ๊ณผ ๋ถ€๋ชจ๋กœ๋งŒ ํ˜•๋ณ€ํ™˜ ๊ฐ€๋Šฅ, ์ž…๋ ฅ(๋งค๊ฐœ๋ณ€์ˆ˜, set ๋“ฑ)์— ์‚ฌ์šฉ

๋งค๊ฐœ๋ณ€์ˆ˜ ํ•œ์ •์ž ref vs out

ref๋Š” ์ด์ „์— ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ€ ์ดˆ๊ธฐํ™” ๋˜์—ˆ์–ด์•ผ ํ•˜์ง€๋งŒ

out์€ ์ด์ „ ๊ฐ’์ด ์žˆ๋“  ์—†๋“  ๋ฌด์‹œํ•˜๊ณ  ์ž๊ธฐ๊ฐ€ ์ดˆ๊ธฐํ™”์‹œํ‚ด

static

static ๋ถ™์€ ๋ณ€์ˆ˜/ํ•จ์ˆ˜๋Š” ๊ณง๋ฐ”๋กœ ํด๋ž˜์Šค๋ช….static๋ช… ํ•ด์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅ

static ๋ณ€์ˆ˜๋Š” ๊ทธ๊ฒƒ์ด ๋“ค์–ด์žˆ๋Š” ํด๋ž˜์Šค๊ฐ€ ์ฒ˜์Œ ์‚ฌ์šฉ๋ ๋•Œ ๋งŒ๋“ค์–ด์ง€๊ณ ,

์ดํ›„ ๋™์ผ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์ ธ๋„ ํ•ด๋‹น static ๋ณ€์ˆ˜๋Š” ๊ฐ ์ธ์Šคํ„ด์Šค๋งˆ๋‹ค ์žˆ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ํ•ญ์ƒ ๋™์ผํ•œ ๊ฑธ ์‚ฌ์šฉ

static ํ•จ์ˆ˜๋Š” ํด๋ž˜์Šค์˜ ์ผ๋ฐ˜ ๋ณ€์ˆ˜ ์‚ฌ์šฉ ๋ชปํ•˜๊ณ  static ๋ณ€์ˆ˜๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

static ํด๋ž˜์Šค๋Š” ์ธ์Šคํ„ด์Šคํ™” x

? ๊ด€๋ จ ์—ฐ์‚ฐ์ž๋“ค

?: ์—ฐ์‚ฐ์ž : ๊ฐ„๋‹จํ•œ if๋ฌธ ๊ฐ„๊ฒฐํ™”, (์‹)?(x):(y) ์ฒ˜๋Ÿผ ์“ฐ๋ฉด if(์‹){x}else{y}์™€ ๊ฐ™๊ฒŒ ๋จ

?., ?[] ์—ฐ์‚ฐ์ž : null ์กฐ๊ฑด๋ถ€ ์—ฐ์‚ฐ์ž : ์•ž์— ์˜ค๋Š” ๊ฐ’์ด null์ด๋ฉด null ๋ฐ˜ํ™˜, null์ด ์•„๋‹ˆ๋ฉด ๋ฉค๋ฒ„/์š”์†Œ ๋ฐ˜ํ™˜

?? ์—ฐ์‚ฐ์ž : null ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž : a??b ์ผ ๋•Œ a๊ฐ€ null์ด ์•„๋‹ˆ๋ฉด a ๋ฐ˜ํ™˜, a๊ฐ€ null์ด๋ฉด b๊ฐ€ null์ธ์ง€ ํ™•์ธํ•˜๊ณ  ๋ฐ˜ํ™˜

??= ์—ฐ์‚ฐ์ž : ?? ์—ฐ์‚ฐ์ž์˜ ์—ฐ์žฅ์„ ์œผ๋กœย  a๊ฐ€ null์ผ ์‹œ b์˜ ๊ฐ’์„ a์— ๋Œ€์ž…

Mathf ํด๋ž˜์Šค ์œ ์šฉํ•œ๊ฒƒ๋“ค

float Clamp(float value, float min, float max) ํ˜น์€ (int value, int min, int max) : value๊ฐ’์„ min๊ณผ max ์‚ฌ์ด๋กœ๋งŒ ํ•œ์ •ํ•จ

float Lerp(float a, float b, float t) : ์„ ํ˜• ๋ณด๊ฐ„๋ฒ•: a์™€ b๋ฅผ 0๊ณผ 1์˜ ์œ„์น˜๋กœ ๋†“๊ณ  t(0<=t<=1)์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ์ฐพ์•„์คŒ

bool Approximately(float a, float b) : ๋ถ€๋™์†Œ์ˆ˜์  ํ˜•์‹์˜ ์˜ค์ฐจ๋ฅผ ๋ฌด์‹œํ•˜๊ณ  a์™€ b๊ฐ€ ๊ฐ™์œผ๋ฉด true๋ฅผ ๋ฐ˜ํ™˜

์ด์ง„ ํŒŒ์ผ ์ž…์ถœ๋ ฅ

File ํด๋ž˜์Šค์—” ์œ ์šฉํ•œ static ๋ฉ”์„œ๋“œ๋“ค์ด ๋งŽ์œผ๋ฏ€๋กœ File.method()์‹์œผ๋กœ ์œ ์šฉํ•˜๊ฒŒ ์“ฐ์ž

  1. FileStream์ด ํ•„์š”ํ•จ. new FileStream(string path, FileMode fileMode)์œผ๋กœ ์—ด์ž. FileMode๋Š” enumํ˜•

  2. ์ž…๋ ฅ์— BinaryWriter, ์ถœ๋ ฅ์— BinaryReader๊ฐ€ ํ•„์š”ํ•จ. ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํŒŒ์ผ์ŠคํŠธ๋ฆผ์„ ๋ฐ›๊ณ , ๋Œ€์ƒ ํŒŒ์ผ์ŠคํŠธ๋ฆผ์€ writer์ผ๋• FileMode.Create, reader์ผ๋• FileMode.Open์ด์–ด์•ผ ํ•จ

  3. ์ด์ œ ๊ทธ๋ƒฅ writer.Write(context) ์‹์œผ๋กœ ์ €์žฅํ•˜๋ฉด ๋œ๋‹ค. ๋ชจ๋“  ํ˜•์‹์— ๋Œ€ํ•ด ์˜ค๋ฒ„๋กœ๋”ฉ๋˜์–ด์žˆ์œผ๋ฏ€๋กœ ใ„ฑใ…Š

  4. ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์šฉ์œผ๋กœ ํ• ๊ฑฐ๋‹คํ•˜๊ณ  stream.Close() ์žŠ์ง€๋ง๊ธฐ -> Close()ํ• ๊ฑฐ์—†์ด using๋ฌธ์„ ์“ฐ๋ฉด ๋ธ”๋ก ์•ˆ์—์„œ๋งŒ ์“ฐ๊ณ  ๋ฐ”๋กœ ํ•ด์ œํ•œ๋‹ค






์ž์ฃผ ์“ธ๋งŒํ•œ๋ฐ ์ž์ฃผ ๊นŒ๋จน๋Š” ๊ฒƒ๋“ค ๋ฐ”๋กœ๋ฐ”๋กœ ๋ณด๋ ค๊ณ  ๋ฉ”๋ชจํ•ด๋†“์Œ