struct MyStruct
{
public int value;
}
MyStruct myStruct = new MyStruct
{
value = 10 // set the initial value to 10
};
---------------------------์กฐ๊ฑด--
myStruct = new MyStruct{ value = myStruct.value + 1 }
// ์ด๋ ๊ฒ ๋ค์ ์ด๊ธฐํํด์ผ ํ๋๋ฐ ๋ฌธ์ ๋ myStruct๋ฅผ ๋ฒํผ๋ฅผ ํตํด์ ๋น๋๊ธฐ ์ด๊ธฐํํ๊ฒ ๋์ด์์ด์ myStruct๊ฐ์ ๋ชป ์ฝ์ด์ด (DOTS)
์ด๋ฐ ๊ฒฝ์ฐ struct๋ด๋ถ์ ํจ์๋ฅผ ์ถ๊ฐํ๋ ๋ญํด์ ๊ฐ๋ฅํ๊ฒ๋ ๋ชป๋ง๋ฌ?
gpt์ ๋ฌผ์ด๋ดค๋๋ฐ ์๋๊ฑฐ ๊ฐ์์ ๋ง์ง๋ง ์งํธ๋ผ๊ธฐ ์ง์ผ๋ฌ ์ด
์ง๋ฌธ์ด ๋ฌด์จ ๋ป์ธ์ง ๋ชจ๋ฅด๊ฒ ์ด์ gpt์ ๋ฌผ์ด๋ณด๊ณ ์ด;;
์ dots์์๋ commandBuffer๋ก struct component๊ฐ์ ๋ณ๊ฒฝ์ํค๋๋ฐ job์์์ ๋๋ฆด๋๋ ๋ค๋ฅธ entity์ component๊ฐ์ ๋ค์ด๋ ํธ๋ก ์ ๊ทผ์ ๋ชปํ๊ฒ ๋์ด์์. ๊ทธ๋์ ๊ธฐ์กด struct๊ฐ์ ์ง์ ์ฐธ์กฐํ์ง ์๊ณ ๋ ๊ฐ๋ฅํ ๋ฐฉ๋ฒ์ ๋ํด์ ๋ฌผ์ด๋ณธ๊ฑฐ์. gptํํ ๋ฌผ์ด๋ณด๋๊น ์ผ๋จ์ ๋ถ๊ฐ๋ฅํ๋จ๊ฑฐ ๊ฐ์
๋ํธ์ ์ฒ๋ผ dots๋ ์ด์ ์ด ์๋ ๊ฒ์? ใท ๊ฑฐ๊พธ๋ก struct๊ฐ ์ฐธ์กฐ ๋ค๊ณ job ์์ ๋ค์ด๊ฐ์ ์ธ๋ถ ์ํฉ์ ์ฒดํฌํ๊ฑฐ๋ ์๊ธฐ ์ฃผ์๋ฅผ ๊ฐฑ์ ํด์ฃผ๋ฉด ์๋๋ ค๋..?
์ด์ ์ ์๋๊ณ ์ ๋ํฐ DOTS์ด๋ผ๊ณ ์ ๋ํฐ์ฉ ECS์
๋ DOTS๋ ๋ชจ๋ฅด๋๋ฐ๋ค๊ฐ ์ง๋ฌธ์ด XY ๋ฌธ์ ์ผ๊ฒ ๋ปํด์ ๋ณ๋ก๋ตํ๊ณ ์ถ์ง์๋ค๋ง, ์ฒซ์งธ๋ก struct๋ ํฌ์ธํฐ(unsafe)๋ฅผ ์ฐ์ง์๋์ด์ ์ฐธ์กฐํ ์ ์๋๊ฒ ์๋. ์ผ๋จ new ์ฐ๋ฉด ๋ค๋ฅธ๋์ ๋ง๋๋๊ฒ์ด๋, ๊ฐ๋ฐ๊ฟ์ ๋ค์ ์ด๊ธฐํ๋ผ๋๊ฒ ์๋ฏธ๊ฐ ์์. ๊ทธ๋ฅ ๊ทธ (์๋ก์ด)๊ฐ์ ์๋ก์ด ๋์ ๋ง๋๋๊ฑฐ์ง.
๊ฐํ์(struct)์ด ์ฐธ์กฐํ์๊ณผ ๋ค๋ฅธ๊ฑด ๊น์๋ณต์ฌ์ ์์๋ณต์ฌ ๋ฌธ์ ์ธ๋ฐ, MyStruct tmp1 = new MyStruct(); MyStruct tmp2 = tmp1; ์ฌ๊ธฐ์ tmp1๊ณผ tmp2๋ ๋ค๋ฅธ ๋์ด๋๊ฑฐ์ผ(๋ค๋ฅธ ์คํ๋ฉ๋ชจ๋ฆฌ). ๊ทธ๋ฐ๋ฐ tmp1์ ๊ฐ์ ์์ ํ๋ ๊ฑธ ์ํจ? ๊ทธ๋ฅ tmp1์ ๊ฐ์ ธ๋ค ์กฐ์ํ๋ฉด๋๋๊ฑด๋ฐ. DOTS๊ฐ ๋ญ ํน๋ณํ๊ฒ ์๋๋ผ๋ฉด ๋จ์ง ์ด๋์ ์ฐธ์กฐํ์ธ 'ํด๋์ค'์ฌ์ฉ ์ต๊ด์ผ๋ก ์ฝ๋ฉ๋จธ๋ฆฌ๊ฐ ๊ตณ์ด์ ธ์์ด์ ์ ๋ฐ Yํด๊ฒฐ ์ฑ ์ ๋ ์ฌ๋ฆฐ ๊ฑฐ๊ฒ ์ง. ์ฐจ๋ผ๋ฆฌ ๋ณธ๋ ํ๋ ค๋๊ฒ ๋ญ์ง ๋ฌผ์ด๋ณด๊ณ ๊ทธ์๋ํ ํด๊ฒฐ์ฑ ์ ์ง๋ฌธํ๋๊ฒ ์ข์๊ฑฐ๊ฐ๋ค.
๊ฐค์ DOTSํ๋ ์ฌ๋์ด ์๋๊ฑฐ ๊ฐ์์ ์ด๋ ๊ฒ๋ผ๋ ๋ฌผ์ด๋ณด๊ณ ์ถ์์ด ๋ฏธ์
๋ฉ์ํ๋์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง record์ฐ๋ฉด ์ด๋ฐ
c# 10์ผ๋ก ์ฌ๋ฆฌ๋๊ฒ ๊ฐ๋ฅํ์ง ์ผ๋จ ์์๋ณผ๊ฒ ใณ
๋๊ฐ ๋ ์ ์๋๋๊ฑฐ์?
๊ทธ๋ฅ ๊ตฌ์กฐ์ ์๋๋๊ฑธ๋ก ๊ฒฐ๋ก ๋จ
์ํ ใ ใ ใทใ