๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90

 

 

C#์—์„œ ๊ตฌ์กฐ์ฒด๋Š” ๊ฐ’ ํ˜•์‹(value type)์ด๊ธฐ์—, ์Šคํƒ(stack)์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜ ์ฒด๊ณ„๋‹ค. ๋ ˆํผ๋Ÿฐ์Šค ํ˜•์‹(reference type)์€ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋Š” ํž™(Heap) ์˜์—ญ์— ์กด์žฌํ•˜๊ณ , ์Šคํƒ(Stack)์—๋Š” ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋กœ ๊ฐ€๋Š” ์ฃผ์†Œ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜ ์ฒด๊ณ„๋‹ค.

 

๊ฒฐ๋ก ์ ์œผ๋กœ Vector3, Vector2๋Š” ๊ตฌ์กฐ์ฒด์ด๊ธฐ์— ์ง€์—ญ ๋ณ€์ˆ˜๋กœ ์ƒ์„ฑํ•œ ๊ฒฝ์šฐ, ๋กœ์ง์ด ๋๋‚˜๋Š” ๋ธ”๋ก(block)์„ ๋งŒ๋‚˜๊ฒŒ ๋˜๋ฉด ์ž๋™ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ˜๋‚ฉ ์ฒ˜๋ฆฌ๊ฐ€ ๋œ๋‹ค.

void Update()
{
   Vector3 vec3 = new Vector3();
   Vector2 vec2 = new Vector2();
} // ๋๋‚˜๋Š” ๋ธ”๋ก์„ ๋งŒ๋‚ฌ์œผ๋ฏ€๋กœ, vec3, vec2 ๋ฉ”๋ชจ๋ฆฌ ๋ฐ˜๋‚ฉ

 

C#์€ ํž™ ํ• ๋‹น์„ ํ•˜๋Š” ํด๋ž˜์Šค ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ํ—ท๊ฐˆ๋ฆฌ๊ฒŒ ์™œ ์ด๋Ÿฐ new ๋ฌธ๋ฒ•์„ ์ง€์›ํ•˜๋„๋ก ๋งŒ๋“ค์–ด๋†จ์„๊นŒ? ๊ตฌ๊ธ€์— ๊ฒ€์ƒ‰ํ•ด๋ณด๋ฉฐ ์ฐพ์•„ ๋ณด๋‹ˆ, ํ†ต์ผ์„ฑ๊ณผ ์ƒ์„ฑ์ž ํ˜ธ์ถœ์„ ์œ„ํ•ด์„œ๋ผ๊ณ  ํ•œ๋‹ค. ๊ตฌ์กฐ์ฒด ๋˜ํ•œ ํด๋ž˜์Šค์ฒ˜๋Ÿผ ์ƒ์„ฑ์ž๋กœ ์ดˆ๊ธฐํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค๊ณ , ๊ทธ ๊ณผ์ •์—์„œ ํด๋ž˜์Šค์™€ ํ†ต์ผ์„ฑ์„ ์ง€ํ‚ค๋ ค๊ณ  ์ด๋ ‡๊ฒŒ ํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค.

 

๊ทผ๋ฐ ๋ง‰์ƒ ๊ณต๋ถ€ํ•˜๋‹ค ๋ณด๋‹ˆ, ๋‹ค์Œ ๋‚ด์šฉ์ด ๊ถ๊ธˆํ•ด์กŒ๋‹ค. ํด๋ž˜์Šค ๋‚ด๋ถ€์— ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋กœ ๊ตฌ์กฐ์ฒด๋ฅผ ์„ ์–ธํ•˜๋ฉด ์–ด๋””์— ์ƒ์„ฑ๋ ๊นŒ?

public class Test : MonoBehaviour
{
    Vector2 globalVec = new Vector2();  // ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋กœ ์„ ์–ธ

    void Start()
    {
        ...
    }
    
    void Update()
    {
        ...
    }
}

 

๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋„ ์ „์—ญ ๋ณ€์ˆ˜์˜ ์ผ์ข…(์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜)์œผ๋กœ ์•Œ๊ณ  ์žˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด, Data ์˜์—ญ์— ์ƒ์„ฑ๋˜์ง€ ์•Š์„๊นŒ?๋ž€ ์ƒ๊ฐ์ด ๋“ค๊ธด ํ•˜๋Š”๋ฐ, ํ  ์ •ํ™•ํžˆ๋Š” ๋ชจ๋ฅด๊ฒ ๋‹ค.

 

๋ฉ‹์ง„ ๋ถ„๊ป˜์„œ ๋Œ“๊ธ€๋กœ ์Šคํƒ ์˜์—ญ์— ์ƒ์„ฑ๋œ๋‹ค๊ณ  ์•Œ๋ ค์ฃผ์…จ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. :)

728x90
๋ฐ˜์‘ํ˜•