EditorPlugin์ add_custom_type
ํจ์๋ก ์์ฑ๋ ๋
ธ๋๋ ์ถ๊ฐ ์ ์ ํํ ์คํฌ๋ฆฝํธ๊ฐ ํ ๋น๋ฉ๋๋ค. ๋ค๋ฅธ ๋
ธ๋์์๋ ํด๋น ์คํฌ๋ฆฝํธ์ ์ ์๋ ๊ธฐ๋ฅ๋ง ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ๊ฑฐ์ ์ธ๋ชจ๊ฐ ์์ต๋๋ค.
์ด๊ฒ์ ๋ค๋ฅธ ๋ ธ๋์ ์์ ํ ๋ค๋ฅด๋ฉฐ ๋ ธ๋ ์ ๋์จ์ ์ฌ์ฉํ๊ธฐ๊ฐ ํจ์ฌ ๋ ์ธ๋ชจ์๊ณ ์ฑ๊ฐ์๊ฒ ๋ง๋ญ๋๋ค.
๋ฌด์จ ๋ง์ธ์ง ์ดํด๊ฐ ์ ๋ผ์
@reduz ํ๋ฌ๊ทธ์ธ์ ์ํด ์์ฑ๋ ์ ํ์ ๋ ธ๋๋ฅผ ์ฅ๋ฉด์ ์ถ๊ฐํ๋ฉด ์ด๋ฏธ ํ๋ฌ๊ทธ์ธ ์คํฌ๋ฆฝํธ๊ฐ ์ฒจ๋ถ๋์ด ์์ต๋๋ค. ๋ฐ๋ผ์ ์ฌ์ฉ์ ์ ์ ๋์์ผ๋ก ๋ค๋ฅธ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
๋ฌผ๋ก ์ด๊ฒ์ ํต์ฌ ์ค๊ณ์ ์ํ ๊ฒ์ด๋ฉฐ ๋ณ๊ฒฝ๋์ง ์์ ๊ฒ์ ๋๋ค.
2016๋ 8์ 7์ผ 18์ 11๋ถ์ "George Marques" [email protected]์ด ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
@reduz https://github.com/reduz ์ฅ๋ฉด์ ๋
ธ๋๋ฅผ ์ถ๊ฐํ๋ฉด
ํ๋ฌ๊ทธ์ธ์ ์ํด ์์ฑ๋ ์ ํ์๋ ์ด๋ฏธ ํ๋ฌ๊ทธ์ธ ์คํฌ๋ฆฝํธ๊ฐ ์ฒจ๋ถ๋์ด ์์ต๋๋ค. ๊ทธ๋์
์ฌ์ฉ์ ์ ์ ๋์์ผ๋ก ๋ค๋ฅธ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์
๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/godotengine/godot/issues/6067#issuecomment -238108767,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AF-Z29F5q8PaoBv4OrzAUayzrfNjfHyZks5qdkoUgaJpZM4JejbZ
.
์ด๊ฑฐ ์ฌํ๋ค. ๊ทธ๋ฌ๋ ํญ์ ๋ถ๋ชจ๋ ์์์๊ฒ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
wontfix๋ก ๋ซ์ต๋๋ค.
์ ๊ฐ ๋ญ๊ฐ ์คํด๋ฅผ ํ๊ณ ์์์ง๋ ๋ชจ๋ฅด์ง๋ง, ์ปค์คํ
ํ์
์ด ์คํฌ๋ฆฝํธ๋ผ๋ฉด,
์์ฑ๋ ๋
ธ๋์ ์ด๋ป๊ฒ ํฌํจ๋์ง ์์ต๋๊น? ๊ทธ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค
๊ทธ๊ฒ์ ๋ค๋ฅด๋ค
2016๋ 8์ 7์ผ ์คํ 9์ 52๋ถ์ "George Marques" [email protected] ์ด ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
์ด๊ฑฐ ์ฌํ๋ค. ๊ทธ๋ฌ๋ ํญ์ ๋ถ๋ชจ๋ ์์์๊ฒ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
wontfix๋ก ๋ซ์ต๋๋ค.
โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/godotengine/godot/issues/6067#issuecomment -238120392,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AF-Z27Zo4Ixvo4APSC4Fxf5ZqCJRsAxXks5qdn3igaJpZM4JejbZ
.
๋ ธ๋๋น ๋ ๊ฐ(๋๋ ๊ทธ ์ด์)์ ์คํฌ๋ฆฝํธ๋ฅผ ๊ฐ์ง ์ ์๋ ๊ธฐ๋ฅ์ด ํ์ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ํ์ง๋ง ์ค์ ๋ก๋ ๊ทธ๋ค์ง ์๋ฏธ๊ฐ ์์ต๋๋ค.
Godot๋ ์๋ ์ด๊ฒ์ ์ง์ํ์ง๋ง ์ด์ ๋ณด๋ค ๋ฌธ์ ๊ฐ ๋ ๋ง์์ต๋๋ค.
2016๋ 8์ 7์ผ ์คํ 10์ 36๋ถ์ "George Marques" [email protected] ์ด ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
๋น 2๊ฐ(๋๋ ๊ทธ ์ด์)์ ์คํฌ๋ฆฝํธ๋ฅผ ๊ฐ์ง ์ ์๋ ๋ฅ๋ ฅ์ด ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด๊ฒ์ ์ค์ ๋ก ๋ง์ ์๋ฏธ๊ฐ ์์ง๋ง.โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/godotengine/godot/issues/6067#issuecomment -238123729,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AF-Z27jidVZl-hHWW3G_ESr8Cqj3eX7Eks5qdogRgaJpZM4JejbZ
.
๋ฌธ์ ๋ ์ปค์คํ
๋
ธ๋๊ฐ ์ค์ ๋ก "์ปค์คํ
๋
ธ๋"๊ฐ ์๋๋ผ ์ฌ์ ์ค์ ๋ ์คํฌ๋ฆฝํธ์ ๋ค๋ฅธ ์์ด์ฝ์ด ์๋ ๊ธฐ๋ณธ ๋
ธ๋์ด๊ธฐ ๋๋ฌธ์ ๊ฑฐ์ ์ธ๋ชจ๊ฐ ์๋ค๋ ๊ฒ์
๋๋ค.
"์ฌ์ฉ์ ์ ์ ๋
ธ๋"์์ ๊ธฐ๋ํ๋ ๊ฒ์ ์คํฌ๋ฆฝํธ์ ์ ์๋ ๋ชจ๋ ๊ฒ์ ์ฌ์ฉํ๋๋ก ๋
ธ๋๋ฅผ ํ์ฅํ ์ ์๋ค๋ ๊ฒ์
๋๋ค. ์์ ์๋๋ฆฌ์ค:
Sprite์ ์์์ธ Test๋ผ๋ ์ฌ์ฉ์ ์ง์ ๋
ธ๋๊ฐ ์๊ณ true
๋ฅผ ๋ฐํํ๋ test()
ํจ์๋ฅผ ์ถ๊ฐํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ ํ
์คํธ ๋
ธ๋๋ฅผ ๋ง๋ค๊ณ ์ฌ๊ธฐ์ ์คํฌ๋ฆฝํธ๋ฅผ ํ ๋นํ๊ณ test()
๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค.
์ด๊ฑด ๋ถ๊ฐ๋ฅ ํด.
๊ทธ๋ฐ ๋ค์ ์ฝค๋ณด๋ฅผ ํ์ฅํ๋ + ์คํฌ๋ฆฝํธ๋ฅผ ์์ํ๋ ์ฅ๋ฉด์ผ๋ก ๋์๊ฐ๋๋ค.
์, ๋ฏธ๋ฆฌ ์ค์ ๋ ์คํฌ๋ฆฝํธ์ ๋ค๋ฅธ ์์ด์ฝ์ด ์๋ ๋ฏธ๋ฆฌ ์ค์ ๋ ๋
ธ๋๊ฐ ๋๋ ๊ฒ์ IMO์
๋๋ค.
์ฌ์ฉ์ ์ ์๊ฐ ์ถฉ๋ถํ์ง๋ง ์ค์ ๋ก ์ฌ์ฉ์ ์ ์ ์ฝ๋๋ฅผ
๊ฑฐ๊ธฐ์์ ํญ์ ๋
ธ๋์ ํจ๊ป ์ ๊ณต๋๋ ๊ฒ์ ์์ํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ํ ์ ์์๋ค
์ ๋ง๋ก ์ํ๋ค๋ฉด UI์์ ์ด๊ฒ์ ์ข ๋ ์ฝ๊ฒ ๋ง๋์ญ์์ค.
2016๋
8์ 8์ผ ์์์ผ ์ค์ 10์ 40๋ถ, Dominik Banaszak [email protected]
์ผ๋ค:
๋ฌธ์ ๋ ์ปค์คํ ๋ ธ๋๊ฐ ์ค์ ๋ก ์ธ๋ชจ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊ฑฐ์ ์ธ๋ชจ๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค.
"์ปค์คํ ๋ ธ๋"๋ ์ฌ์ ์ค์ ๋ ์คํฌ๋ฆฝํธ์ ๋ค๋ฅธ ๊ธฐ๋ณธ ๋ ธ๋์ผ ๋ฟ์ ๋๋ค.
์. ๊ทธ๋ฐ ๋ค์ ์ฝค๋ณด๋ฅผ ํ์ฅํ๋ + ์คํฌ๋ฆฝํธ๋ฅผ ์์ํ๋ ์ฅ๋ฉด์ผ๋ก ๋์๊ฐ๋๋ค.โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/godotengine/godot/issues/6067#issuecomment -238240130,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AF-Z27eHoXwgr6buF6CCAHfxwx1dKkCiks5qdzHhgaJpZM4JejbZ
.
UI๋ฅผ ํตํด ์๋ํ/์ฝ๊ฒ ๋ง๋ค ์ ์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค.
๋ด๊ฐ ์ดํดํ๋ ๋ฐ์ ๋ฐ๋ฅด๋ฉด ๊ธฐ๋ณธ ์ ๊ณต ๋ ธ๋์ฒ๋ผ ์๋ํ๋ ์ฌ์ฉ์ ์ง์ ๋ ธ๋๋ฅผ ์์ฑํ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. ์ฆ, ๋ค์ ๊ธฐ๋ฅ์ด ์์ด์ผ ํฉ๋๋ค.
RedNode2D
๋ Node2D
๋ฅผ ํ์ฅํ๊ณ ์ฌ์ฉ์ ์ง์ ์คํฌ๋ฆฝํธ๋ฅผ ํตํด ์ ์๋ ๋นจ๊ฐ์ ๋ณ์กฐ๊ฐ ์์).extends RedNode2D
).์ด๋ ์ฌ์ฉ์ ์ ์ ๋ ธ๋๋ฅผ ์ ์ธํ ๋ "์์ฐ์ค๋ฌ์ด" ๊ธฐ๋์น์ด๋ฉฐ ๋งค์ฐ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ด ๋ ๊ฒ์ ๋๋ค. ๋๋ ๋ถ๋ถ์ ์ผ๋ก ๋์์ธ ๊ฒฐ์ ์ผ๋ก ์ธํด ์ง๊ธ๊น์ง ์ด๋ฐ ์์ผ๋ก ์๋ํ์ง ์๋๋ค๋ ๊ฒ์ ์์์ ์์งํฉ๋๋ค. ์์์ ์ค๋ช ํ ๊ฒ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ฐ์ง ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค๋ฉด ๋ง์ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์์ ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค. assetlib๋ ์ฆ์ ์ฌ์ฉํ ์ ์๋ ๋ง์ ์์ ์ ์ํํ๊ณ ๋ด์ฅ๋ ๊ฒ์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ ์ฌ์ฉ์ ์ง์ ๋ ธ๋๋ก ๊ฐ๋ ์ฐจ ์์ต๋๋ค.
๋ฌด์์ ํ ์ ์๋์ง/ํ์ง ๋ง์์ผ ํ๋์ง์ ๋ํ ํฉ์๊ฐ ์์ ๋๊น์ง ์ฌ๊ฐํฉ๋๋ค.
+1
์ด๊ฒ์ "OtherEngine(tm)"์์ Godot๋ก ๊ธฐ์กด ํ๋ก์ ํธ๋ฅผ ์ด์ํ๋ ค๊ณ ํ ๋ ์ ์๊ฒ ์ฒซ ๋ฒ์งธ ์ฃผ์ ์ฅ์ ๋ฌผ ์ค ํ๋์์ต๋๋ค. ์์์ ์ค๋ช
ํ @akien-mga์ ๊ฐ์ ์ฌ์ฉ์ ์ง์ ์ ํ์ ๋ฑ๋ก ํ ๋ค๋ฅธ ๋ด์ฅ ์ ํ์ฒ๋ผ ์๋ํด์ผ ํฉ๋๋ค.
๊ทธ๋ค์ด ์๋๋ผ๊ณ ์๊ฐํ๋ ๋ฐฉ์์ ์ค๋ช ํด ์ฃผ์ญ์์ค.
2016๋ 8์ 8์ผ ์ค์ 11์ 50๋ถ์ "Ralf Hรถlzemer" [email protected] ์ด ์์ฑํ์ต๋๋ค.
+1
์ด๊ฒ์ ๋ด๊ฐ ํฌํ ์ ์๋ํ์ ๋ ๋๋ฅผ ์ํ ์ฒซ ๋ฒ์งธ ์ฃผ์ ์ฅ์ ๋ฌผ ์ค ํ๋์์ต๋๋ค.
"OtherEngine(tm)"์์ Godot๊น์ง์ ๊ธฐ์กด ํ๋ก์ ํธ. ๋ค์๊ณผ ๊ฐ์ ์ฌ์ฉ์ ์ ์ ์ ํ
@akien-mga https://github.com/akien-mga ์์์ ์ค๋ช ํ ๋๋ก
๋ฑ๋ก ํ ๋ค๋ฅธ ๋ด์ฅ ์ ํ์ฒ๋ผ ์๋ํฉ๋๋ค.โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/godotengine/godot/issues/6067#issuecomment -238261603,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AF-Z25PJzv9w7iXO350tRF3FcEuYQYUKks5qd0IrgaJpZM4JejbZ
.
์ด์ ์ ์ด๋ฏธ ๋งํ๋ฏ์ด ํ์ฌ ๊ฐ์ฅ ํฐ ๋จ์ ์ ์ฌ์ฉ์ ์ ์ ์ ํ์ด ํด๋น ์คํฌ๋ฆฝํธ์ ๊ธฐ๋ณธ ์ ํ์ ์ธ์คํด์คํํ๊ณ ํด๋น ์ธ์คํด์ค์ ์ ์ ํ ์คํฌ๋ฆฝํธ๋ฅผ ํ ๋นํ๋ ๋น ๋ฅธ ๋ฐฉ๋ฒ์ ๋ถ๊ณผํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ ๋ด์ฅ ์ ํ์ผ๋ก ํ ์ ์๋ ๊ฒ์ฒ๋ผ ํธ์ง๊ธฐ์์ ๋ค๋ฅธ ์คํฌ๋ฆฝํธ๋ก ํด๋น ๋ ธ๋๋ฅผ ํ์ฅํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๊ฒ ๋ง๋ญ๋๋ค.
๊ทธ๋ฌ๋ "์ ๋ ธ๋/๋ฆฌ์์ค ๋ง๋ค๊ธฐ" ๋ํ ์์์์ ์ฌ์ฉ์ ์ง์ ๋ ธ๋๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํธ๋ฆฌ๋ฅผ ๊ตฌ์ถํ๋ ๊ฒ๋ ๋ถ๊ฐ๋ฅํฉ๋๋ค. add_custom_type์ ํตํด ๊ธฐ๋ณธ ์ ๊ณต ์ ํ์ ๋ถ๋ชจ๋ก ๋ฑ๋กํ ๋ ์ด๋ฌํ ํธ๋ฆฌ์๋ง ํ์๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
์๋ฅผ ๋ค์ด, ๋จ์ผ ๊ธฐ๋ณธ ์ ํ์์ ๋ด ํ๋ก์ ํธ์ ๋ชจ๋ ์ฌ์ฉ์ ์ ์ ์ ํ์ ์์ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
base.gd
extends Node
export (Color) var color
type_a.gd
extends base.gd
type_b.gd
extends base.gd
์ง๊ธ์ฒ๋ผ ์ด๋ฐ ์ ํ์ ๋ฑ๋กํด์ผ ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ add_custom_type์ ๋ ๋ฒ์งธ ์ธ์๋ "Node"์ฌ์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ํ ์์์ ํ์๋์ง ์์ต๋๋ค.
func _enter_tree():
add_custom_type("Base", "Node", preload("base.gd"), preload("base.png"))
add_custom_type("TypeA", "Node", preload("type_a.gd"), preload("type_a.png"))
add_custom_type("TypeB", "Node", preload("type_b.gd"), preload("type_b.png"))
... ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด ๊ฒฐ๊ณผ์ ๋๋ค.
์ด์ ๊ฐ์ด ์ฌ์ฉ์ ์ ์ ์ ํ์ ๋ฑ๋กํ ์ ์๋ค๋ ๊ฒ์ ์ข์ ์ผ์ด์ง๋ง ๋ํ ์์๋ ๋ค๋ฅธ ๊ธฐ๋ณธ ์ ๊ณต ์ ํ๊ณผ ๊ฐ์ ์ ํ์ ์์ ํน์ฑ์ ๋ฐ์ํ์ง ์์ต๋๋ค. ๋ชจ๋ ๋นํธ์ธ ์ ํ์ ๊ฒฝ์ฐ ํด๋น ํธ๋ฆฌ๋ฅผ ๋ณด๊ณ ๋ด๊ฐ ์ฒ๋ฆฌํ๋ ๋ด์ฉ์ ํ ๋์ ๋ณผ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด Sprite ๊ฐ Node2D์ด๊ณ ๋ฐ๋ผ์ Node2D์์ ์ ๊ณตํ๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ์์ํ๋์ง ํ์ธํ ์ ์์ต๋๋ค. ์ฌ์ฉ์ ์ ์ ์ ํ์ ๊ฒฝ์ฐ์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.
์ด์ ์์์ ์ธ๊ธํ @akien-mga์ ๊ฐ์ด ์ฌ์ฉ์ ์ ์ ์ ํ์ ์ ์ญ ๋ฒ์์ ์์ ํ ๋ฑ๋กํ ์ ์๋ค๋ฉด ์ํฉ์ ํจ์ฌ ๋ ์ฝ๊ฒ ์ดํดํ๊ณ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฒซ์งธ, ํ์ผ ๊ฒฝ๋ก/์ด๋ฆ ๋์ ์ ํ ์ด๋ฆ ์ผ๋ก ์ฐธ์กฐ๋๋ ์ฌ์ฉ์ ์ ์ ์ ํ์ ์์ํ ์ ์์ต๋๋ค.
base.gd
extends Node
export (Color) var color
type_a.gd
extends Base
type_b.gd
extends Base
... ๊ทธ๋ฌ๋ฉด ์ฌ์ฉ์ ์ ์ ์ ํ์ ๋ฑ๋ก์ด ๋ค์๊ณผ ๊ฐ์ด ๋จ์ํ๋ ์ ์์ต๋๋ค. add_custom_type์ ๋๋ฝ๋ ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์์ ์ ์ํ์ญ์์ค.
func _enter_tree():
add_custom_type("Base", preload("base.gd"), preload("base.png"))
add_custom_type("TypeA", preload("type_a.gd"), preload("type_a.png"))
add_custom_type("TypeB", preload("type_b.gd"), preload("type_b.png"))
... "์ ๋ ธ๋/๋ฆฌ์์ค ๋ง๋ค๊ธฐ" ๋ํ ์์์์ ํจ์ฌ ๋ ๋ฉ์ง ๊ฐ์๋ฅผ ์ป์ ์ ์์ต๋๋ค.
... ๊ทธ๋ฆฌ๊ณ ๋ฌผ๋ก ์ฌ์ฉ์ ์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ ํธ์ง๊ธฐ์์ ํด๋น ์ ํ์ ํ์ฅํ๋ ๊ธฐ๋ฅ:
... ์คํฌ๋ฆฝํธ ์ด๋ฆ/๊ฒฝ๋ก ๋์ ์ ํ ์ด๋ฆ ์ผ๋ก๋ ์ฐธ์กฐ๋ฉ๋๋ค.
extends Base
์ฌ๊ธฐ์์ ํ๋ ์ดํ ์ ์๋ ์์ ์์ ํ๋ฌ๊ทธ์ธ์ด ์์ต๋๋ค.
addons.zip
์ ๊ทธ๋ ๊ตฐ์.. ์ด ๋ ๊ฐ์ง๋ฅผ ํ์คํ ๊ณ ์น ์ ์์ด์ผ ํฉ๋๋ค.
์คํฌ๋ฆฝํธ ์์ฑ ๋ํ ์์์ ์์ ์ง์ ์ถ๊ฐ
2016๋ 8์ 8์ผ ์คํ 1์ 54๋ถ์ "Ralf Hรถlzemer" [email protected] ์์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
์ด์ ์ ์ด๋ฏธ ๋งํ๋ฏ์ด ํ์ฌ _๊ฐ์ฅ ํฐ ๋จ์ _์
์ฌ์ฉ์ ์ ์ ์ ํ์ ๊ธฐ๋ณธ ์ ํ์ ์ธ์คํด์คํํ๋ ๋น ๋ฅธ ๋ฐฉ๋ฒ์ ๋ถ๊ณผํฉ๋๋ค.
ํด๋น ์คํฌ๋ฆฝํธ์ ์ ์ ํ ์คํฌ๋ฆฝํธ๋ฅผ ํด๋น ์ธ์คํด์ค์ ํ ๋นํฉ๋๋ค. ์ด๊ฒ
ํธ์ง๊ธฐ์์ ํด๋น ๋ ธ๋๋ฅผ ๋ค๋ฅธ ์คํฌ๋ฆฝํธ๋ก ํ์ฅํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๊ฒ ๋ง๋ญ๋๋ค.
๋ด์ฅ ์ ํ์ผ๋ก ํ ์ ์๋ ๊ฒ์ฒ๋ผ.๊ทธ๋ฌ๋ ์ฌ์ฉ์ ์ ์ ๋ ธ๋๋ก ์์ ํธ๋ฆฌ๋ฅผ ๊ตฌ์ถํ๋ ๊ฒ๋ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
"Create new Node/Resource" ๋ํ ์์๋ ์ด๋ฌํ ๋ํ ์์์๋ง ํ์๋๊ธฐ ๋๋ฌธ์
๋ด์ฅ ์ ํ์ ํตํด ๋ถ๋ชจ๋ก ๋ฑ๋กํ ๋ ํธ๋ฆฌ
add_custom_type.์๋ฅผ ๋ค์ด ๋ด ๋ชจ๋ ์ฌ์ฉ์ ์ ์ ์ ํ์ ์์ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
๋จ์ผ ๊ธฐ๋ณธ ์ ํ์ ํ๋ก์ ํธ._base.gd http://base.gd_
๋ ธ๋ ํ์ฅ
๋ด๋ณด๋ด๊ธฐ(์์) var ์์_type_a.gd http://type_a.gd_
base.gd ํ์ฅ
_type_b.gd http://type_b.gd_
base.gd ํ์ฅ
์ง๊ธ์ฒ๋ผ ์ด๋ฐ ์ ํ์ ๋ฑ๋กํด์ผ ํฉ๋๋ค. ์ด์
์ด ๊ฒฝ์ฐ add_custom_type์ ๋ ๋ฒ์งธ ์ธ์๋ "Node"์ฌ์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด
๋ํ ์์์ ํ์๋์ง ์์ต๋๋ค.func _enter_tree():
add_custom_type("๊ธฐ๋ณธ", "๋ ธ๋", preload("base.gd"), preload("base.png"))
add_custom_type("TypeA", "Node", preload("type_a.gd"), preload("type_a.png"))
add_custom_type("TypeB", "๋ ธ๋", preload("type_b.gd"), preload("type_b.png"))... ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด ๊ฒฐ๊ณผ์ ๋๋ค.
[์ด๋ฏธ์ง: add_node_flat]
https://cloud.githubusercontent.com/assets/8785013/17486294/9bcc029c-5d90-11e6-81e6-6fce6b0e7cf0.png์ด์ ๊ฐ์ด ์ฌ์ฉ์ ์ ์ ์ ํ์ ๋ฑ๋กํ ์ ์๋ค๋ ๊ฒ์ ์ข์ง๋ง,
๋ํ ์์๋ ๋ค์๊ณผ ๊ฐ์ ์ ํ์ ์์ ํน์ฑ์ ๋ฐ์ํ์ง ์์ต๋๋ค.
๋ค๋ฅธ ๋ด์ฅ ์ ํ. ๋ชจ๋ ๋ด์ฅ ์ ํ์ ๊ฒฝ์ฐ ํด๋น ํธ๋ฆฌ๋ฅผ ๋ณด๊ณ
๋ด๊ฐ ๋ฌด์์ ๋ค๋ฃจ๊ณ ์๋์ง ํ ๋์๋ณด์ญ์์ค. ์๋ฅผ ๋ค์ด ๋๋ ๋ค์๊ณผ ๊ฐ์ด ํ์ ํ ์ ์์ต๋๋ค.
Sprite๋ Node2D์ด๋ฏ๋ก _์ ๊ณต๋๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ์์ํฉ๋๋ค.
by_ Node2D. ์ฌ์ฉ์ ์ ์ ์ ํ์ ๊ฒฝ์ฐ์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.์ด์ ์ฌ์ฉ์ ์ ์ ์ ํ์ด ๋ค์๊ณผ ๊ฐ์ด ์ ์ญ ๋ฒ์์ ์์ ํ ๋ฑ๋ก๋ ์ ์๋ค๋ฉด
@akien-mga https://github.com/akien-mga ์์์ ์ธ๊ธํ ๋๋ก
์ดํดํ๊ณ ์ฌ์ฉํ๋ ๊ฒ์ด ํจ์ฌ ๊ฐ๋จํฉ๋๋ค.๋จผ์ _type name_์์ ์ฐธ์กฐํ๋ ์ฌ์ฉ์ ์ ์ ์ ํ์์ ์์ํ ์ ์์ต๋๋ค.
ํ์ผ ๊ฒฝ๋ก/์ด๋ฆ ๋์ ._base.gd http://base.gd_
๋ ธ๋ ํ์ฅ
๋ด๋ณด๋ด๊ธฐ(์์) var ์์_type_a.gd http://type_a.gd_
๋ฒ ์ด์ค ํ์ฅ
_type_b.gd http://type_b.gd_
๋ฒ ์ด์ค ํ์ฅ
... ๊ทธ๋ฌ๋ฉด ์ฌ์ฉ์ ์ ์ ์ ํ์ ๋ฑ๋ก์ด ๋ค์๊ณผ ๊ฐ์ด ๋จ์ํ๋ ์ ์์ต๋๋ค.
์ด๊ฒ. add_custom_type์ ๋๋ฝ๋ ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์์ ์ ์ํ์ญ์์ค.func _enter_tree():
add_custom_type("๊ธฐ๋ณธ", preload("base.gd"), preload("base.png"))
add_custom_type("TypeA", preload("type_a.gd"), preload("type_a.png"))
add_custom_type("TypeB", preload("type_b.gd"), preload("type_b.png"))... "์๋ก ๋ง๋ค๊ธฐ
๋ ธ๋/๋ฆฌ์์ค" ๋ํ ์์:[์ด๋ฏธ์ง: add_node_tree]
https://cloud.githubusercontent.com/assets/8785013/17487264/619f4da0-5d94-11e6-880f-a00791e30125.png... ๋ฌผ๋ก ํธ์ง๊ธฐ์์ ์ด๋ฌํ ์ ํ์ ํ์ฅํ๋ ๊ธฐ๋ฅ์
์ฌ์ฉ์ ์ ์ ์คํฌ๋ฆฝํธ:[์ด๋ฏธ์ง: custom_type_no_script]
https://cloud.githubusercontent.com/assets/8785013/17487807/b54aced2-5d96-11e6-90e5-ee838b6a1335.png... ์คํฌ๋ฆฝํธ ๋์ _type name_์ผ๋ก๋ ์ฐธ์กฐ๋ฉ๋๋ค.
์ด๋ฆ/๊ฒฝ๋ก๋ฒ ์ด์ค ํ์ฅ
์ฌ๊ธฐ์์ ํ๋ ์ดํ ์ ์๋ ์์ ์์ ํ๋ฌ๊ทธ์ธ์ด ์์ต๋๋ค.
addons.zip https://github.com/godotengine/godot/files/407291/addons.zipโ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/godotengine/godot/issues/6067#issuecomment -238299152,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AF-Z20FQioFVkVcvhhbvDQ7jQKv5De7Hks5qd19QgaJpZM4JejbZ
.
์ ๋ ์ผ์ด๋์ง ์์ ์ผ์ ์ธ์คํด์ค ๋
ธ๋์์ ์คํฌ๋ฆฝํธ๊ฐ ์ฌ๋ผ์ง๋ ๊ฒ์
๋๋ค.
์จ๊ฒจ์ง๋ฏ๋ก ๋
ธ๋๊ฐ ์คํฌ๋ฆฝํ
๋์์์ ๋ถ๋ช
ํ ํด์ผ ํ์ง๋ง
๊ฑฐ๊ธฐ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ๋ฉด ์ฌ์ ํ ํด๋น ์คํฌ๋ฆฝํธ๋ฅผ ๋์ฒดํ ์ ์์ต๋๋ค.
๊ทธ๊ฒ์์ ์์
2016๋ 8์ 8์ผ ์คํ 2์ 2๋ถ์ "Juan Linietsky" [email protected] ์ด ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
์ ๊ทธ๋ ๊ตฐ์.. ์ด ๋ ๊ฐ์ง๋ฅผ ํ์คํ ๊ณ ์น ์ ์์ด์ผ ํฉ๋๋ค.
์คํฌ๋ฆฝํธ ์์ฑ ๋ํ ์์์ ์์ ์ง์ ์ถ๊ฐ2016๋ 8์ 8์ผ ์คํ 1์ 54๋ถ์ "Ralf Hรถlzemer" [email protected] ์์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
์ด์ ์ ์ด๋ฏธ ๋งํ๋ฏ์ด ํ์ฌ _๊ฐ์ฅ ํฐ ๋จ์ _์
์ฌ์ฉ์ ์ ์ ์ ํ์ ๊ธฐ๋ณธ ์ ํ์ ์ธ์คํด์คํํ๋ ๋น ๋ฅธ ๋ฐฉ๋ฒ์ ๋ถ๊ณผํฉ๋๋ค.
ํด๋น ์คํฌ๋ฆฝํธ์ ์ ์ ํ ์คํฌ๋ฆฝํธ๋ฅผ ํด๋น ์ธ์คํด์ค์ ํ ๋นํฉ๋๋ค. ์ด๊ฒ
ํธ์ง๊ธฐ์์ ํด๋น ๋ ธ๋๋ฅผ ๋ค๋ฅธ ์คํฌ๋ฆฝํธ๋ก ํ์ฅํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๊ฒ ๋ง๋ญ๋๋ค.
๋ด์ฅ ์ ํ์ผ๋ก ํ ์ ์๋ ๊ฒ์ฒ๋ผ.๊ทธ๋ฌ๋ ์ฌ์ฉ์ ์ ์ ๋ ธ๋๋ก ์์ ํธ๋ฆฌ๋ฅผ ๊ตฌ์ถํ๋ ๊ฒ๋ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
"Create new Node/Resource" ๋ํ ์์๋ ์ด๋ฌํ ๋ํ ์์์๋ง ํ์๋๊ธฐ ๋๋ฌธ์
๋ด์ฅ ์ ํ์ ํตํด ๋ถ๋ชจ๋ก ๋ฑ๋กํ ๋ ํธ๋ฆฌ
add_custom_type.์๋ฅผ ๋ค์ด ๋ด ๋ชจ๋ ์ฌ์ฉ์ ์ ์ ์ ํ์ ์์ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
๋จ์ผ ๊ธฐ๋ณธ ์ ํ์ ํ๋ก์ ํธ._base.gd http://base.gd_
๋ ธ๋ ํ์ฅ
๋ด๋ณด๋ด๊ธฐ(์์) var ์์_type_a.gd http://type_a.gd_
base.gd ํ์ฅ
_type_b.gd http://type_b.gd_
base.gd ํ์ฅ
์ง๊ธ์ฒ๋ผ ์ด๋ฐ ์ ํ์ ๋ฑ๋กํด์ผ ํฉ๋๋ค. ์ด์
์ด ๊ฒฝ์ฐ add_custom_type์ ๋ ๋ฒ์งธ ์ธ์๋ "Node"์ฌ์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด
๋ํ ์์์ ํ์๋์ง ์์ต๋๋ค.func _enter_tree():
add_custom_type("๊ธฐ๋ณธ", "๋ ธ๋", preload("base.gd"), preload("base.png"))
add_custom_type("TypeA", "Node", preload("type_a.gd"), preload("type_a.png"))
add_custom_type("TypeB", "๋ ธ๋", preload("type_b.gd"), preload("type_b.png"))... ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด ๊ฒฐ๊ณผ์ ๋๋ค.
[์ด๋ฏธ์ง: add_node_flat]
https://cloud.githubusercontent.com/assets/8785013/17486294/9bcc029c-5d90-11e6-81e6-6fce6b0e7cf0.png์ด์ ๊ฐ์ด ์ฌ์ฉ์ ์ ์ ์ ํ์ ๋ฑ๋กํ ์ ์๋ค๋ ๊ฒ์ ์ข์ง๋ง,
๋ํ ์์๋ ๋ค์๊ณผ ๊ฐ์ ์ ํ์ ์์ ํน์ฑ์ ๋ฐ์ํ์ง ์์ต๋๋ค.
๋ค๋ฅธ ๋ด์ฅ ์ ํ. ๋ชจ๋ ๋ด์ฅ ์ ํ์ ๊ฒฝ์ฐ ํด๋น ํธ๋ฆฌ๋ฅผ ๋ณด๊ณ
๋ด๊ฐ ๋ฌด์์ ๋ค๋ฃจ๊ณ ์๋์ง ํ ๋์๋ณด์ญ์์ค. ์๋ฅผ ๋ค์ด ๋๋ ๋ค์๊ณผ ๊ฐ์ด ํ์ ํ ์ ์์ต๋๋ค.
Sprite๋ Node2D์ด๋ฏ๋ก _์ ๊ณต๋๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ์์ํฉ๋๋ค.
by_ Node2D. ์ฌ์ฉ์ ์ ์ ์ ํ์ ๊ฒฝ์ฐ์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.์ด์ ์ฌ์ฉ์ ์ ์ ์ ํ์ ์ ์ญ ๋ฒ์์ ์์ ํ ๋ฑ๋กํ ์ ์๋ค๋ฉด
์์์ ์ธ๊ธํ @akien-mga https://github.com/akien-mga ์ฒ๋ผ
์ดํดํ๊ณ ์ฌ์ฉํ๋ ๊ฒ์ด ํจ์ฌ ๊ฐ๋จํฉ๋๋ค.๋จผ์ _type name_์์ ์ฐธ์กฐํ๋ ์ฌ์ฉ์ ์ ์ ์ ํ์์ ์์ํ ์ ์์ต๋๋ค.
ํ์ผ ๊ฒฝ๋ก/์ด๋ฆ ๋์ ._base.gd http://base.gd_
๋ ธ๋ ํ์ฅ
๋ด๋ณด๋ด๊ธฐ(์์) var ์์_type_a.gd http://type_a.gd_
๋ฒ ์ด์ค ํ์ฅ
_type_b.gd http://type_b.gd_
๋ฒ ์ด์ค ํ์ฅ
... ๊ทธ๋ฌ๋ฉด ์ฌ์ฉ์ ์ ์ ์ ํ์ ๋ฑ๋ก์ด ๋ค์๊ณผ ๊ฐ์ด ๋จ์ํ๋ ์ ์์ต๋๋ค.
์ด๊ฒ. add_custom_type์ ๋๋ฝ๋ ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์์ ์ ์ํ์ญ์์ค.func _enter_tree():
add_custom_type("๊ธฐ๋ณธ", preload("base.gd"), preload("base.png"))
add_custom_type("TypeA", preload("type_a.gd"), preload("type_a.png"))
add_custom_type("TypeB", preload("type_b.gd"), preload("type_b.png"))... "์๋ก ๋ง๋ค๊ธฐ
๋ ธ๋/๋ฆฌ์์ค" ๋ํ ์์:[์ด๋ฏธ์ง: add_node_tree]
https://cloud.githubusercontent.com/assets/8785013/17487264/619f4da0-5d94-11e6-880f-a00791e30125.png... ๋ฌผ๋ก ํธ์ง๊ธฐ์์ ์ด๋ฌํ ์ ํ์ ํ์ฅํ๋ ๊ธฐ๋ฅ์
์ฌ์ฉ์ ์ ์ ์คํฌ๋ฆฝํธ:[์ด๋ฏธ์ง: custom_type_no_script]
https://cloud.githubusercontent.com/assets/8785013/17487807/b54aced2-5d96-11e6-90e5-ee838b6a1335.png... ์คํฌ๋ฆฝํธ ๋์ _type name_์ผ๋ก๋ ์ฐธ์กฐ๋ฉ๋๋ค.
์ด๋ฆ/๊ฒฝ๋ก๋ฒ ์ด์ค ํ์ฅ
์ฌ๊ธฐ์์ ํ๋ ์ดํ ์ ์๋ ์์ ์์ ํ๋ฌ๊ทธ์ธ์ด ์์ต๋๋ค.
addons.zip https://github.com/godotengine/godot/files/407291/addons.zipโ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/godotengine/godot/issues/6067#issuecomment -238299152,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AF-Z20FQioFVkVcvhhbvDQ7jQKv5De7Hks5qd19QgaJpZM4JejbZ
.
@reduz
๋
ธ๋๊ฐ ์คํฌ๋ฆฝํ
๋์์์ ๋ช
ํํ ํ๋ ๊ธฐ์ ์ ์ธ ์ด์ ๊ฐ ์์ต๋๊น? ๊ทธ๋ ๋ค๋ฉด ์ ์ ๋ ์คํฌ๋ฆฝํธ ์ฌ๋กฏ์ด์ด์ผ ํฉ๋๊น?
์ฌ์ฉ์ ์ ์ ์ ํ์ ํ์ํ๋ ๋ค์ ์ํฌ๋ฅธ ๋ฐฉ๋ฒ์ธ ๊ฒ ๊ฐ์ผ๋ฉฐ ๋ ธ๋์ ํ์ฌ ์คํฌ๋ฆฝํธ๋ฅผ ๊ต์ฒดํ์ฌ ์ด๋ฏธ ์กด์ฌํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฅํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ป๋๋ค๋ ์์ด๋์ด๋ ์๋ฌด๋ ์๊ฐํ์ง ๋ชปํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๊ฒ์ ์คํฌ๋ฆฝํธ๋ฅผ ํตํ ํ์ฅ์ด ๊ธฐ๋ณธ ์ ํ์ ๋ํด ์๋ํ๋ ๋ฐฉ์์ด ์๋๋๋ค.
์ฌ์ฉ์๊ฐ ํด๋น ์คํฌ๋ฆฝํธ ํ๋๋ฅผ ์ง์ฐ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ์ฌ์ฉ์ ์ ์ ์ ํ์ด ์ด์ ์คํฌ๋ฆฝํธ๋ก ๋๋์๊ฐ๋์ ์๋๋ฉด ๊ธฐ๋ณธ ์ ํ์ผ๋ก ์์ ํ ๋๋์๊ฐ๋๊น? ๋ค์ ๋งํ์ง๋ง, ๋๋ ์ด๊ฒ์ด ์ข์ ์๊ฐ์ด ์๋๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋์ , ๋น ์คํฌ๋ฆฝํธ ์ฌ๋กฏ์ ํฌ์ํ์ง ์๊ณ ๋ค๋ฅธ ์์, ์ผ๋ถ ์์ด์ฝ ๋๋ ๋ค๋ฅธ ๊ฒ์ ํตํด ๋ ธ๋ ํธ๋ฆฌ ๋๋ ์์ฑ ํธ์ง๊ธฐ์์ ์ฌ์ฉ์ ์ ์ ์ ํ์ผ๋ก ํ์๋ ์ ์์ต๋๋ค.
์ ๋ ์ผ์ด๋์ง ์์ ์ผ์ ์ธ์คํด์คํ๋ ๋ ธ๋์์ ์คํฌ๋ฆฝํธ๊ฐ ์ฌ๋ผ์ง๊ฑฐ๋ ์จ๊ฒจ์ง๋ ๊ฒ์ ๋๋ค. ๋ ธ๋๊ฐ ์คํฌ๋ฆฝํ ๋์์์ ๋ถ๋ช ํ ํด์ผ ํ์ง๋ง ์ฌ๊ธฐ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ๋ฉด ํด๋น ๋ ธ๋์์ ์์๋ ์คํฌ๋ฆฝํธ๋ฅผ ๋์ฒดํ ์ ์์ต๋๋ค.
์ฌ๊ธฐ์ ์์ ์ ์ฌ์ฉ์ ์ง์ ๋
ธ๋๋ฅผ ์ ์ํ๋ ์คํฌ๋ฆฝํธ๊ฐ _instanced_ ๋
ธ๋์ ์์ฑ์ด ์๋๋ผ ํด๋น ์ ํ์ ์์ฑ์ด๊ธฐ ๋๋ฌธ์ _should_ ์จ๊ฒจ์ ธ ์๋ค๋ ๊ฒ์
๋๋ค. ๋ฐ๋ผ์ ์ด ์คํฌ๋ฆฝํธ๋ ์ฌ์ฉ์ ์ ์ ๋
ธ๋์ ์์ฑ์ ๋ถ์ฌํด์ผ ํ์ง๋ง ๋ด์ฅ ๋
ธ๋์ C++ ํด๋์ค์ฒ๋ผ ์ธ์คํด์ค ๋
ธ๋์ ์ฌ์ฉ์์๊ฒ ๋ณด์ด์ง ์์์ผ ํฉ๋๋ค. API๋ฅผ ์ ๊ณตํ์ง๋ง ์์ ์ด ๋ถ๊ฐ๋ฅํ๊ณ ํ์ฅ๋ง ๊ฐ๋ฅํฉ๋๋ค. Sprite๋ฅผ ์ธ์คํด์คํํ ๋ scenes/2d/sprite.cpp
๊ฐ ์ธ์คํด์คํ๋ ๋
ธ๋์ ์คํฌ๋ฆฝํธ๋ก ์ฒจ๋ถ๋์ง ์๋ ๊ฒ์ฒ๋ผ, my_custom_node.gd
๊ฐ ์ธ์คํด์ค ์ฌ์ฉ์ ์ ์ ๋
ธ๋์ ์์ ๊ฐ๋ฅํ ์คํฌ๋ฆฝํธ๋ก ์ฒจ๋ถ๋์ด์๋ ์๋ฉ๋๋ค.
์ง๊ธ ๋น์ฅ์ ๊ธฐ์ ์ ์ผ๋ก _๊ฐ๋ฅํ_์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์์ฐ์ค๋ฌ์ด ์ฌ์ฉ ์ฌ๋ก AFAIU๊ฐ ๋ ๊ฒ์
๋๋ค. ์ฌ์ฉ์ ์ ์ ์ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ์์ ํ๋ฉด ์ ํ ์์ฒด๊ฐ ์์ ๋๋ฏ๋ก ์ด ์ ํ์ ๋ชจ๋ ์ธ์คํด์ค์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ฉ์ ์ ์ ์ ํ์ ์ฌ์ฉํ๋ ์ธ์คํด์คํ๋ ๋
ธ๋์๋ extends CustomNode
์์ฒด ์คํฌ๋ฆฝํธ๊ฐ ์์ด์ผ ํฉ๋๋ค.
๋๋ ๊ทธ ๊ธฐ๋ฅ์ "๊ธฐ๋ณธ ์ฌ์ฉ์ ์ ์ ์คํฌ๋ฆฝํธ ์ ํ"์ ๋ํ ์ถ๊ฐ ํฌ์ธํฐ๊ฐ ์๋ Object๊ฐ ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์๋ํ๋ฉด ๊ทธ ์ ๋ณด์์ ์ฌ์ฉ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ ๊ฑฐํ๋ ค๊ณ ํ ๋ ํด๋น ์ ๋ณด๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์
๋๋ค(์ค์ ๋ก ๊ธฐ๋ณธ ์คํฌ๋ฆฝํธ๋ก ๋์ฒดํด์ผ ํจ).
์ผ๋จ ๊ฐ์ง๊ณ ์์ผ๋ฉด ๋๋จธ์ง๋ ์๋ง์ ๋ถ์์ฉ์ ์ผ์ผํฌ ์ ์์ผ๋ฏ๋ก ๋ชจ๋ ๊ฒฝ์ฐ์ ํฌํจ์ํค๋ ๋ฌธ์ ์
๋๋ค. ๊ฒฐ๊ตญ์๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ๋ง ๋ค๋ฅผ ๋ฟ ํ๋์ ์คํฌ๋ฆฝํธ๋ง ์ฒจ๋ถ๋ ๊ฒ์
๋๋ค.
๋๋ ์ผ๋ฐ์ ์ผ๋ก ์์์ ๋ํ ์ด๋ ฌํ ํฌ์ด ์๋์ง๋ง ์ด๊ฒ์ด ๋ด๊ฐ ํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
์ฌ์ค, ๊ทธ ํฌ์ธํฐ๋ ํ์ํ์ง๋ ์์์ต๋๋ค. ์คํฌ๋ฆฝํธ๋ฅผ ํ์ํ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์คํฌ๋ฆฝํธ๋ก add_custom_type()์ ์ํํ๋ฉด ์์ง์ด ํด๋์ค์ ํ๋๊ทธ๋ฅผ ์ค์ ํ ์ ์์ผ๋ฏ๋ก "์ด ์คํฌ๋ฆฝํธ ํด๋์ค๋ ์์ง ์ ํ ํ์ฅ์ ๋๋ค"์ ๊ฐ์ด ์ ๋ณด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ฌ์ฉ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ ๊ฑฐํ๋ฉด "์ฌ์ฉ์ ์ ์ ์ ํ"์ผ๋ก ํ์๋ ์ฒซ ๋ฒ์งธ ์์๋ ์คํฌ๋ฆฝํธ ํด๋์ค๋ก ๋์ฒด๋๊ฑฐ๋ ์๋ ๊ฒฝ์ฐ ์ ๊ฑฐํฉ๋๋ค.
์ฃ์กํฉ๋๋ค. ๋
ธ๋์ ์คํฌ๋ฆฝํธ๊ฐ ์๋ ๊ฒฝ์ฐ ์คํฌ๋ฆฝํธ๋ฅผ ์จ๊ธฐ๋ ๊ฒ์ ๋ฐ๋ํฉ๋๋ค. ๋ญ์ผ
์๋ ๊ฒ์ ์๋ฎฌ๋ ์ด์
ํ๋ ํฌ์ธํธ?
์คํฌ๋ฆฝํธ๊ฐ ์๋ค๋ ์ฌ์ค์ด ์ฌ๋กฏ์ด ์ฌ์ฉ ์ค์ด๊ฑฐ๋ ํ์ํ๋ค๋ ์๋ฏธ๋ ์๋๋๋ค.
๋ ๋ฒ์งธ ์คํฌ๋ฆฝํธ,
๊ธฐ์กด ๊ฒ.
๋์ํ๋ค๋ฉด ์ฐ๋ฆฌ๊ฐ ํ ์ ์๋ ์ผ์ ์ฅ๋ฉด ํธ๋ฆฌ์์ ์คํฌ๋ฆฝํธ ์์ด์ฝ์ ์จ๊ธฐ๋ ๊ฒ์
๋๋ค.
ํ ๋น๋ ์คํฌ๋ฆฝํธ๋ ์ฌ์ฉ์ ์ ์ ์ ํ์ ์คํฌ๋ฆฝํธ์ด๋ฉฐ ์คํฌ๋ฆฝํธ๋ฅผ
์์ฑ ๋ํ ์์๋ ์คํฌ๋ฆฝํธ ์์ฑ ์ ์์์ ์๋์ผ๋ก ์ ์ํฉ๋๋ค.
์ด ์ ๋๋ฉด ๋ ๊น์?
2016๋ 8์ 10์ผ ์คํ 11์ 1๋ถ์ "Marc" [email protected] ์ด ์์ฑํ์ต๋๋ค.
์ฌ์ค, ๊ทธ ํฌ์ธํฐ๋ ํ์ํ์ง๋ ์์์ต๋๋ค. ์คํฌ๋ฆฝํธ๋ฅผ ํ์ํ๋ฉด
์๋ฅผ ๋ค์ด ์คํฌ๋ฆฝํธ๋ก add_custom_type()์ ์ถ๊ฐํ๋ฉด ์์ง์ด
์ ๋ณด๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํด๋์ค์ ํ๋๊ทธ๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
์คํฌ๋ฆฝํธ ํด๋์ค๋ ์์ง ์ ํ ํ์ฅ์
๋๋ค." ์ฌ์ฉ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ ๊ฑฐํ๋ฉด
๊ทธ๋ฐ ๋ค์ "custom
type"์ ์
๋ ฅํ๊ฑฐ๋ ์๋ ๊ฒฝ์ฐ ์ ๊ฑฐํฉ๋๋ค.
โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์
๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/godotengine/godot/issues/6067#issuecomment -239055986,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AF-Z2xLGOhgMk__ZoRW1neRu1aRb5Qr_ks5qeoJogaJpZM4JejbZ
.
@reduz ์ถฉ๋ถํ ์ข์ ๊ฒ ๊ฐ์์ :์ค๋ง์ผ:
@reduz ๋์ํฉ๋๋ค. ๋ ๋ฒ์งธ ์คํฌ๋ฆฝํธ๊ฐ ํ์ํ๋ค๊ณ ๋งํ์ง ์์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ์คํฌ๋ฆฝํธ(ํ๋ฌ๊ทธ์ธ์์ ์ ์ํ ์ฌ์ฉ์ ์ ์)๋ฅผ ์์ํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ ๋ค์ ์ ๊ฑฐํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ฉด ์ด๋ป๊ฒ ๋ ์ง ๊ถ๊ธํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์คํฌ๋ฆฝํธ ์์ด ๋ ธ๋๋ฅผ ๊ธฐ๋ณธ ์์ง ์ ํ์ผ๋ก ๋๋๋ฆฌ๊ฒ ์ต๋๊น?
๋๋ ์ฐ๋ฆฌ๊ฐ ์ด๋ป๊ฒ ๋ ๊ทธ๊ฒ์ ๋ ์ฌ์ฉ์ ์นํ์ ์ผ๋ก ๋ง๋ค ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
2016๋ 8์ 11์ผ 06:10์ "Marc" [email protected] ์ด ์ผ์ต๋๋ค.
@reduz https://github.com/reduz ๋์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๊ฐ ํ์ํ๋ค๊ณ ๋งํ์ง ์์์ต๋๋ค.
๋ ๋ฒ์งธ ์คํฌ๋ฆฝํธ. ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ๋ฉด ์ด๋ป๊ฒ ๋๋์ง ๊ถ๊ธํฉ๋๋ค.
์ฒซ ๋ฒ์งธ ๊ฒ(ํ๋ฌ๊ทธ์ธ์์ ์ ์ํ ์ฌ์ฉ์ ์ ์)์ ์์ํ์ง๋ง ๋ค์์ผ๋ก ๊ฒฐ์ ํฉ๋๋ค.
๊ทธ๊ฒ์ ์ ๊ฑฐํ์ญ์์ค. ๊ทธ๋ฐ ๋ค์ ๋ ธ๋๋ฅผ ๊ธฐ๋ณธ ์์ง ์ ํ์ผ๋ก ๋๋๋ฆฝ๋๋ค.
๊ทธ๋ผ ์คํฌ๋ฆฝํธ?โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/godotengine/godot/issues/6067#issuecomment -239109334,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AF-Z26JUJ0gjaCFwlsIDsINWp3_nqliwks5qeubygaJpZM4JejbZ
.
์ด ์ฃผ์ https://github.com/godotengine/godot/issues/6067#issuecomment -238299152์ ์ค๋ช ๋ ๊ฒฝ๋ก ๋์ ์ ํ ์ ์ ๋ ธ๋๋ก ํ์ฅ ๋ถ๋ถ์ ํํค์ณค์ต๋๋ค.
์ถ๊ฐํ ๋ช ๊ฐ์ง ์ ์ ์ฌํญ:
์์:
add_custom_type("MyCustomNode", "Node2D", preload("my_custom_node.gd"), preload("icon.png"))
node.get_type() should return "MyCustomNode" instead of "Node2D"
์์:
์ฌ์ฉ์ A๋ Node2D๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ณด๋ค ์ ํํ ๊ฐ์์ฑ ์๋ฆผ์ ์ํ ํ๋ฌ๊ทธ์ธ์ ๋ง๋ญ๋๋ค.
add_custom_type("PreciseNotifier", "Node2D", preload("precise_notifier.gd"), preload("icon.png"))
๊ทธ๋ฐ ๋ค์ ์ฌ์ฉ์ B๋ ๋ค๋ฅธ ๊ตฌ์ฑ์ด ์๋ ๋ค๋ฅธ ์ ๋์จ ํด๋์ ์ ํํ ์๋ฆฌ๋ฏธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํธ๋ฆฌ๊ฑฐ ์ ๋์จ์ ๊ฐ๋ฐํฉ๋๋ค.
add_custom_type("Trigger", "PreciseNotifier", preload("trigger.gd"), preload("icon.png"))
๊ทธ๋ฆฌ๊ณ trigger.gd ์คํฌ๋ฆฝํธ์์๋ ์ ํ ์ด๋ฆ์ผ๋ก ํ์ฅํด์ผ ํฉ๋๋ค.
extends PreciseAddon
๋ฌผ๋ก ์ฌ์ฉ์๋ ํธ๋ฆฌ๊ฑฐ ํ๋๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ ์ ๋์จ์ ๋ชจ๋ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
ํ ๊ทธ๋ฃน์ ์คํฌ๋ฆฝํธ๊ฐ ์๋ ์ฌ์ฉ์ ์ ์ ๋ ธ๋ ์ ํ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์ฌ์ฉ์ ์ ์ ๋ ธ๋ ์ ํ์์ ์ฌ์ ํ ํ์๋๋ ๊ฒ์ผ๋ก ์ ์ํ๊ณ ๋ค๋ฅธ ๊ทธ๋ฃน์ ๋์ผํ ์๋๋ฆฌ์ค๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ๋๋์๊ฐ ๋ ธ๋๋ก ์ ์ํ๋ ค๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค. ์์ง ์ ํ. ๋๋ ์ ์ ๊ทธ๋ฃน์ ์ํด ์์ง๋ง ์ฌ์ฉ์ ์ ์ ์ ํ์ด ์ฌ์ ํ "์คํฌ๋ฆฝํ "๋๊ณ UI์์ ์ด๋ฅผ ๋ช ํํ๊ฒ ํ๋ ค๋ ๊ฒ๊ณผ ๊ด๋ จํ์ฌ ํ์ ๊ทธ๋ฃน์ ์์ ๋ ๋ณผ ์ ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ์ ์ถฉ์์ ์ผ์ข
์ ์คํฌ๋ฆฝํธ++ ์์ด์ฝ์ด ์๋ ์คํฌ๋ฆฝํธ ์์ด์ฝ ์์ ์๋ ์ฅ๋ฉด ํธ๋ฆฌ ๋
์ ๋
ธ๋ ํ์ ์ถ๊ฐ UI ๋ฒํผ์ ๋๋ ๊ฒ์
๋๋ค. ์ด๋ฅผ ํด๋ฆญํ๋ฉด extends Base
๋๋ extends "Base"
์ ๊ฐ์ด ์ฌ์ฉ์ ์ ์ ์ ํ์์ ์ด๋ฏธ ์์๋ ์คํฌ๋ฆฝํธ๊ฐ ์๋ ์ผ๋ฐ์ ์ธ "์คํฌ๋ฆฝํธ ์์ฑ" ํ์
์ฐฝ์ผ๋ก ์ด๋ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ ์๋ ์คํฌ๋ฆฝํธ๊ฐ ์์ฑ๋๊ณ ์ฌ์ ์ค์ ์คํฌ๋ฆฝํธ๊ฐ ๋ฌด์์ด๋ ์ฆ์ ๋์ฒด๋ฉ๋๋ค. ๋ฐ๋ผ์ ๋
ธ๋์ ์ด๋ฏธ ์กด์ฌํ๋ ์คํฌ๋ฆฝํธ๊ฐ ์์์ ์ฌ์ ํ ๋ช
ํํ๊ฒ ํ์ํ ์ ์์ง๋ง ํด๋น ์ฌ์ ์ค์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ๊ฒ ๊ต์ฒดํ ์ ์๋ ์น์ํ ์ธํฐํ์ด์ค๋ ์์ต๋๋ค.
์ด ์ ์์ ์ปค์คํ ๋ ธ๋๋ฅผ ์์ง ๋ด ๋์ ๋ ธ๋์ ๋ค์ ๋ค๋ฅด๊ฒ ์ทจ๊ธํ๊ธฐ ๋๋ฌธ์ ์๋ง๋ ๋ ์ง๊ด์ ์ผ ๊ฒ์ ๋๋ค. ์๊ฐ?
์ด ํ ๋ก ์ ๋ท๋ถ๋ถ์์ 2์ผํธ๋ฅผ ์ค ๋ ๋ฌธ์ ๋ ์ ๋์จ์ ์์ํ๋ ์ฌ๋ฌ ๋
ธ๋๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ผํ ์๋ณธ ์คํฌ๋ฆฝํธ๋ฅผ ๊ณต์ ํ๋ค๋ ์ฌ์ค์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. Juan์ด ์ด ์ค๋ ๋์ ๋งจ ์ฒ์์ ์ฃผ์ฅํ๋ฏ์ด ์ฝ๋ ๊ฐ์์ฑ์ ์ ๊ฒฝ์ฐ์ง ์์ต๋๋ค. ๋์์ธ ์ ํ์ด์ ์ ๋์จ์ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์์๊ฒ ๋
ธ๋ ๋์์ ํฌ๋ช
ํ๊ฒ ๋ง๋๋ ๋ฐ ์ค์ํ ๊ฒ์ด๊ธฐ๋ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ผ๋ฐ์ ์ผ๋ก ์ฝ๋์์ ๋ค๋ฅธ ๋
ธ๋์ ๋์์ ๋ณ๊ฒฝํ๊ณ ์ถ์ ๊ฒ์ด๋ฉฐ ํ์ฌ๋ก์๋ ์๋ ์คํฌ๋ฆฝํธ ์ฐธ์กฐ๋ฅผ ์ ๊ฑฐํ๊ณ ์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ค๊ณ ๊ธฐ๋ณธ ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ๋ ๊ฒ๋ฟ์
๋๋ค. ์ ์ ๋์จ ๋
ธ๋์ ์คํฌ๋ฆฝํธ๋ฅผ ์ .gd ํ์ผ๋ก save as
ํ ์๋ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์๋ณธ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ ๋ค๋ฅธ ๋ชจ๋ ๋
ธ๋์ ๋ํ ์ฐธ์กฐ๊ฐ ๋ณ๊ฒฝ๋๋ฏ๋ก ์ด 3๋จ๊ณ ๋ณต์ฌ-๋ถ์ฌ๋ฃ๊ธฐ๊ฐ ์์ต๋๋ค. ์ ์ฐจ์.
๋ค์ ๋งํ์ง๋ง ๊ทธ๋ ๊ฒ ๋ณต์กํ์ง ์์ต๋๋ค. ์ด ํน๋ณํ ๊ฒฝ์ฐ์ GDScript ํธ์ง๊ธฐ์ save as
์ต์
์ด ์์๋๋ก ์๋ํ์ง ์์ผ๋ฉฐ ' GDScript ํธ์ง๊ธฐ์์ '๋ณต์ฌ ๋ฐ ์ ์ฅ' ๋ฒํผ์ ์ฌ์ฉํ์ฌ ์ ๋์จ์ ๋น ๋ฅด๊ฒ ์ฌ์ฉ์ ์ ์ํ ์ ์์ต๋๋ค(๊ทธ๋ฆฌ๊ณ ์ํคํ
์ฒ ์ธก๋ฉด์์ ์ด ๋ฒํผ์ ํ์ํ๋ ๊ฒ์ ์์๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ ํ์ ์์ด Godot์์ ๊ฒ์์ ๋ง๋๋ ์ข์ ์ ๊ทผ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ ์๋ฏธ๊ฐ ์์ต๋๋ค).
@henriquelalves ๋๋ ์ฝ๋์์ ์ฌ์ฉ์ ์ ์ ๋
ธ๋๋ฅผ ์ฌ์ฉ์ ์ ์ํ๋ ๊ฒ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ์์์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด extends "addons/thing/thing.gd"
? ์์๋ ์คํฌ๋ฆฝํธ๋ ๋ฌด์์ ์ฌ์ ์ํ๋์ง ์๋ฉด ์ ๋์จ ๋ฒ์ ๊ณผ ๋์ผํ ์์
์ ๊ณ์ ์ํํฉ๋๋ค. ๋ณต์ฌ/๋ถ์ฌ๋ฃ๊ธฐ๊ฐ ํ์ ์์ต๋๋ค.
@Zylann ๋น์ ์ด ์ณ์์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ์ฝ๋ ๊ฐ์์ฑ๊ณผ ์๋ ์์ฑ ๋จ์ ๋๋ฌธ์ ์ด ํน์ ์ ๊ทผ ๋ฐฉ์์ ์ข์ํ์ง ์์ต๋๋ค(์ ์ด๋ 2.1์์๋ ์ง๊ธ๊น์ง ํ
์คํธํ์ง ์์์ต๋๋ค). ๊ทธ๋ฆฌ๊ณ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ๊ณ ์ถ์ง ์๊ณ ์๋ ์ ๋์จ ์คํฌ๋ฆฝํธ์์ ํ์ฅ ๋ณ์๊ฐ ์๋ ํน์ ํญ๋ชฉ๋ง ๋ณ๊ฒฝํฉ๋๋ค. ์ด๊ฒ์ด ํ์ฌ save as
๋์์์ ์ ๋ฅผ ๊ดด๋กญํ๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฌํ ์คํฌ๋ฆฝํธ์ ๋ํ ๋ชจ๋ ๋
ธ๋ ์ฐธ์กฐ๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ ์คํฌ๋ฆฝํธ ์ฌ๋ณธ์ ์ ์ํ๊ฒ ์์ฑํ ์ ์์ต๋๋ค. UI ์นํ์ ์ธ ๋ฐฉ์์ผ๋ก ์ด๊ฒ์ ํด๊ฒฐํ๋ฉด ์ฌ์ฉ์ ์ ์ํ ์ฌ๋ฌ ๋
ธ๋์ ์ฝ๋ ๊ฐ์์ฑ ๋ฑ์ ์๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ฉ๋๋ค.
@henriquelalves ๊ธ์, ๋๋ ๋ณต์ฌ/๋ถ์ฌ๋ฃ๊ธฐ tbh xD๋ฅผ ์ฐธ์ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋น์ ์ ๋ํ ๋ฒ์ ๊ด๋ฆฌ๊ฐ ์๋ ํ๋ฌ๊ทธ์ธ์ ํฌํฌํ๊ณ ์ฒ์์ ๋์ ์ฌ์ฉํ ์ ์๋ค.
@Zylann Forking ํ๋ฌ๊ทธ์ธ์ ์์ฃผ ๊ฐ๋จํด์ผ ํ๋ ๊ฒ์ ๋ ๋ง์ ๋จ๊ณ๋ฅผ ์ถ๊ฐํ๊ณ ์์ต๋๋ค. ํํํ. ์ฌ์ ํ save as
๋์์ด ์ด์ํ๋ค๊ณ ์๊ฐํ๋๋ผ๋ ์ด๊ฒ์ด ์ฐ์ ์์๊ฐ ์๋ ๊ฒฝ์ฐ ์๋ ๋ณต์ฌ-๋ถ์ฌ๋ฃ๊ธฐ๋ฅผ ๊ณ์ํ ๊ฒ์
๋๋ค.
@henriquelalves ๋ณต์ฌ/๋ถ์ฌ๋ฃ๊ธฐ๋ ๋ถ๊ธฐ์ ๋๋ค^^ ํ์ง๋ง ๋ฒ์ ๊ด๋ฆฌ ์์ด ์๋ฃํ๋ฉด ํ๋ฌ๊ทธ์ธ์ด ์ ๋ฐ์ดํธ๋๋ฉด ๋์ค์ ๋ค์์ ๋ฌผ์ด๋ฏ์ ๊ฒ์ ๋๋ค.
์ฌ์ฉ์ ์ง์ ๋ ธ๋์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฒจ๋ถํ๋ ํ์ฌ ๋์์ ํด๋น ์ฌ์ฉ์ ์ง์ ๋ ธ๋๋ฅผ ์ ๋์จ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋จ์ํ ์คํฌ๋ฆฝํธ๋ฅผ ๋ ธ๋์ ์ฒจ๋ถํ๋ ๊ฒ์ ์ด์ ์ด ๊ฑฐ์ ์์ต๋๋ค. ์ ์ผํ ์ด์ ์ ๋ ธ๋ ๋ํ ์์์ ํ์๋๋ค๋ ๊ฒ์ธ๋ฐ ์ค์ ๋ก๋ ์ ํ ์ด์ ์ด ์์ต๋๋ค.
์ ๋ ์ฌ์ฉ์ ์ ์ ๋ ธ๋๊ฐ ์ผ๋ฅ ๋ด์ฅ ์ ํ์ฒ๋ผ ์๋ํด์ผ ํ๋ค๊ณ ์ฃผ์ฅํ๋ ์ง์์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ ์ ๋์จ์ ๋ง๋ค๊ฑฐ๋ ์ฌ์ฉํ๋ ๊ฒ์ ๊ท์ฐฎ๊ฒํฉ๋๊น? ๋ํ ์์์์ ๋ณผ ์ ์๊ณ ์คํฌ๋ฆฝํธ ์ถ๊ฐ ๋ฒํผ์ ํด๋ฆญํ์ง ์์๋ ๋ฉ๋๊น?
@RodeoMcCabe ๋ฌธ์ ๋ ์ฌ์ฉ์ ์ ์ ์ ํ์ด ์ค์ ๋ก๋ ์ฌ์ ํ ์์ง ๋ด ๋ ธ๋ ์์ ๊ณ์ธตํ๋ ์คํฌ๋ฆฝํธ์ด๋ฉฐ ์ฌ์ฉ์ ์ ์ ์ ํ ๋ ธ๋๊ฐ ์์ง ์์ค๋ก ์ง์ ์ปดํ์ผ๋์ง ์๊ธฐ ๋๋ฌธ์ ๋ณ๊ฒฝํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๊ฐ ํด์ผ ํ ์ผ์ ์ด๋ฌํ ์คํฌ๋ฆฝํ ๋ ๋ ธ๋๊ฐ ์ฌ์ฉ์์ ๋์ ์์ง ๋ด ๋ ธ๋์ ๋์์ ์๋ฎฌ๋ ์ด์ ํ ์ ์๋๋ก ํ๋ ๊ตฌ์ฒด์ ์ธ ๋จ๊ณ/๊ธฐ๋ฅ ์ธํธ๋ฅผ ๊ณต์ํํ๋ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด...
add_custom_type
์ ์ผ๋ถ๊ฐ ์๋).add_custom_type
ํจ์๊ฐ ์ถ์ ์ ํ์ธ์ง ์ฌ๋ถ์ ๋ํด bool์ ์ถ๊ฐํ๋ ๊ฒ์ ํฌํจํ ์ ์์ต๋๋ค. "๋
ธ๋ ์์ฑ" ๋ง๋ฒ์ฌ๋ ๊ทธ์ ๋ฐ๋ผ ์ถ์ ์ฌ์ฉ์ ์ ์ ์ ํ ์์ฑ์ ์ฐจ๋จํ๋๋ก ์
๋ฐ์ดํธํด์ผ ํฉ๋๋ค.๋ ธ๋๊ฐ ์คํฌ๋ฆฝํธ๊ฐ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋๋ก ํ์ญ์์ค.
ใ . ๋ ธ๋์๋ Scene ๋ํฌ์ "์คํฌ๋ฆฝํธ๊ฐ ์ด ๋ ธ๋์ ์์ต๋๋ค" ์์ด์ฝ์ด ์์ด์ผ ํฉ๋๋ค. ์ข ๋ ํฌ๋ช ํ๊ฒ ๋ง๋ค๊ธฐ ์ํด "์ด๊ฒ์ ์ฌ์ฉ์ ์ ์ ์ ํ ๋ ธ๋์ ๋๋ค" ์์ด์ฝ์ด ๋์ ์์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ฌ์ฉ์๋ฅผ ํด๋ฆญํ๋ฉด ์ฌ์ฉ์ ์ ์ ์ ํ ์ถ๊ฐ ์คํฌ๋ฆฝํธ๋ก ์ง์ ์ด๋ํ ์ ์์ต๋๋ค. ๊ทธ๊ฒ์ "๋ชฐ์ "์ ๊นจ๋จ๋ฆฌ์ง๋ง ์ฌ์ฉ์ฑ์ ์ํด ํ์ํ ํฌ์์ด ๋ ๊ฒ์ ๋๋ค(๋ถ๋ช ํ ์ํ๋ ๊ฒฝ์ฐ ์ฌ์ฉ์ ์ ์ ์ ํ ๋ ธ๋๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ๋ณด๊ณ ๋ณผ ์ ์๊ธฐ๋ฅผ ์ํ ๊ฒ์ ๋๋ค).
๋น. ์ธ์คํํฐ์ ํ์๋๋ ์คํฌ๋ฆฝํธ ์์ฑ์ ์ฌ์ฉ์๊ฐ ์คํฌ๋ฆฝํธ๋ฅผ ๋ก๋ํ์ง ์๋ ํ ๊ธฐ๋ณธ์ ์ผ๋ก ๋น์ด ์๋ ๊ฒ์ผ๋ก ํ์๋์ด์ผ ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ์คํฌ๋ฆฝํธ๋ ์ฌ์ฉ์ ์ ์ ์ ํ์ผ๋ก ์ฌ์ฉ๋ ์คํฌ๋ฆฝํธ ์ ํ์์ ํ์๋์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ฉ์๋ ์ฌ์ฉ์ ์ ์ ์ ํ์ ์คํฌ๋ฆฝํธ ํ์ผ ์์น๋ฅผ ์ ํ์๊ฐ ์์ต๋๋ค(์คํฌ๋ฆฝํธ๋ผ๋ ๊ฐ๋
์ ์จ๊ฒจ์ ธ ์์ด์ผ ํจ). ์ด๊ฒ์ ์ฌ์ฉ์ ์ ์ ํด๋์ค์ ๋ฌธ์์ด ์ด๋ฆ์ด ๋ค๋ฅธ ์์ง ๋ด ํด๋์ค์ฒ๋ผ GDScript ํ์์ ์ํด ์ธ์๋์ด์ผ ํ๊ฑฐ๋(์ผ๋ง๋ ์ฌ์ด์ง/์ด๋ ค์ด์ง ํ์คํ์ง ์์) ๋ ์ฝ๋๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํ ์ผ์ข
์ ์ ์ญ ํจ์๊ฐ ์์ด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ํด๋์ค ์ด๋ฆ, ์๋ฅผ ๋ค์ด add_custom_type("MyClass", "Node", load(res://addons/git-repo/api/my_class.gd), load(res://addons/git-repo/icons/icon_myclass.svg)
์ ์๋ ์คํฌ๋ฆฝํธ์ ๊ฒฝ์ฐ ์ฌ์ฉ์๋ extends MyClass
๋๋ extends custom("MyClass")
๋ฅผ ์ฌ์ฉํ์ฌ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
์จ. ์ฌ์ฉ์๊ฐ ์ฌ์ฉ์ ์ ์ ์ ํ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ ธ๋์ ๋ก๋ํ๋ ๊ฒฝ์ฐ์๋ง "์ด ๋ ธ๋์ ์คํฌ๋ฆฝํธ๊ฐ ์์ต๋๋ค" ์์ด์ฝ์ด ์ฅ๋ฉด ๋ ์ ํ์๋์ด์ผ ํฉ๋๋ค.
์คํฌ๋ฆฝํธ์ ์ฌ์ฉ๋๋ ํธ์ง๊ธฐ ์์ด์ฝ์ ํ์ฌ ์คํฌ๋ฆฝํธ์ ์ฌ์ฉ๋๋ ํฐ์ ์์ ๋ชจ์์ ์์ด์ฝ ๋์ ์นดํ
๊ณ ๋ฆฌ ๋ธ๋ก์ ์ถ๊ฐ๋์ด์ผ ํฉ๋๋ค( property_editor.cpp
). ์ด๊ฒ์ ์ฌ์ฉ์ ์ ์ ์ ํ ๋
ธ๋ ๊ฐ์ฒด์ ๋ํ __meta__
์ฌ์ ์์ฑ์ ์ผ๋ถ์ฌ์ผ ํฉ๋๋ค.
Object::get_script()
๋ ์ฌ์ฉ์ ์ ์ ์ ํ ์คํฌ๋ฆฝํธ๊ฐ ์๊ณ ๋ก๋๋ ์คํฌ๋ฆฝํธ๊ฐ ์๋ ๋
ธ๋์ ๋ํด null
๋ฅผ ๋ฐํํด์ผ ํฉ๋๋ค.Object::get_property_list
, ๋ฉ์๋ ๋ฐ ์ ํธ์ ๋ํ ์ ์ฌํ ๊ธฐ๋ฅ์ ๋ก๋๋ ์คํฌ๋ฆฝํธ๊ฐ ์๋๋ผ๋ ์ฌ์ฉ์ ์ ์ ์ ํ ์คํฌ๋ฆฝํธ์ ๋ด์ฉ์ ํฌํจํด์ผ ํฉ๋๋ค.Object::get_custom_script()
๊ฐ์ ๋ ๋ฒ์งธ C++ Object ํจ์๊ฐ ํ์ํ ์ ์์ผ๋ฏ๋ก ์คํฌ๋ฆฝํ
์ธก์์ ์ด ๋ ๋ฒ์งธ ์คํฌ๋ฆฝํธ๋ฅผ ์ธ์ํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ์๋ ์์ง์ด ์คํฌ๋ฆฝํธ๊ฐ ์๋์ง ํ์ธํ ์ ์์ต๋๋ค.&is_valid
์ฐธ์กฐ bool)๋ฅผ ๋ณด๊ณ ํ์ฌ ๊ฐ์ฒด๊ฐ ์ด๋ฅผ ์ํํ ์ ์๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ์ด ์ ๋ณด์ ๋ํ ํผ๋๋ฐฑ์ ์ ๊ณตํด์ผ ํ๋ ๊ด๋ จ Godot ํธ์ง๊ธฐ ์๋๋ฆฌ์ค๋ ์ด๋ฅผ ์ค๋ช
ํ๊ธฐ ์ํด ์
๋ฐ์ดํธ๋์ด์ผ ํฉ๋๋ค.์ด๊ฒ์ ๋จ์ง ํ๋ฉด์ ๊ธ๋ ๊ฒ์ผ ๋ฟ์ด์ง๋ง ์ฌ์ฉ์๊ฐ ์ฐพ๊ณ ์๋ ๋์์ ์ข ๋ฅ๋ ์ด ์ ๋(๊ทธ๋์ ๊ฝค ๊ฐ๋ ฌํจ)์ ๋ํ ๊ฒ์ ๋๋ค. ํ์ํ ๊ฒฝ์ฐ ์ฌ์ฉ์ ์ ์ ์ ํ์ ์กด์ฌ์ ์ก์ธ์คํ ์ ์๋๋ก ํ๊ณ (๋ฐ๋ผ์ ํด๋น ์คํฌ๋ฆฝํธ๋ฅผ ๋ณด๋ ค๋ฉด ๋ ธ๋ ํ์ ์๋ ์ฅ๋ฉด ๋ ์ ์ฌ์ฉ์ ์ ์ ์ ํ ์์ด์ฝ์ด ์์ด์ผ ํจ) ์ธ์ํ ์ ์๋๋ก ๊ฐ๋ฅํ ํ ํด๋น ์ ํ์ ์กด์ฌ๋ฅผ ์จ๊ธฐ๊ณ ์ถ์ต๋๋ค. ์์ง ๋ด ์ ํ์ผ๋ก. ์๋ง๋ ๋ง์ ๊ณณ์์ ๋ฌผ๊ฑด์ ๋ง๊ฐ๋จ๋ฆด ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ ๋๋ก ํ๋ ค๋ฉด ๋ง์ ์์ ์ด ํ์ํ ๊ฒ์ ๋๋ค.
์ด ์ค ์ข์ ์๋ฆฌ๊ฐ ์์ต๋๊น? ๋๋ ๋จ์ง ์กฐ๊ธ ์๊ณ ํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ด๊ฐ ๋์น ํญ๋ชฉ์ด ๋ ์์ ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค. ์ด๊ฒ์ด ๋ฏธ์น ์๋ฆฌ์ฒ๋ผ ๋ค๋ฆฌ๋ฉด ์ ์๊ฒ ์๋ ค์ฃผ์ญ์์ค. ;-)
ํธ์ง: ์, ํ์ง๋ง ์คํฌ๋ฆฝํธ๊ฐ ์ฌ์ฉ์ ์ ์ ์ ํ ์คํฌ๋ฆฝํธ์ ์ผ์นํ๋ ๊ฒฝ์ฐ ์ฅ๋ฉด ๋
์์ ์คํฌ๋ฆฝํธ ์์ด์ฝ์ ์จ๊ธฐ๊ฒ ๋ค๋ reduz์ ์ ์๋ ๊ฐ์น๊ฐ ์์ ์ ์์ต๋๋ค. ๋จ, get_script()
๋ฉ์๋๋ ์ฌ์ ํ ์๋ฌด ๊ฒ๋ ๋ฐํํ์ง ์์ต๋๋ค. Object ์์ฒด์ ๋ณ๋์ ์คํฌ๋ฆฝํธ ์์ฑ์ ์์ฑํ์ง ์๊ณ ๋ ํ ์ ์๋ ๋ฐฉ๋ฒ ์ด ์์๊น์? Idk, ์๋ํ๋ฉด ์ฐ๋ฆฌ๊ฐ ์ ์งํ๊ณ ์ถ์ง๋ง custom_type
์คํฌ๋ฆฝํธ ๊ฐ๋
์ผ๋ก ์ ์งํ๊ธฐ ์ด๋ ค์ด ๊ฐ์ฒด๋น 1๊ฐ์ ์คํฌ๋ฆฝํธ์ ๋ํ ์ฝ๋๋ฒ ์ด์ค์ ์ด๋ฏธ ๋ง์ ๊ฐ์ ์ด ์๊ธฐ ๋๋ฌธ์
๋๋ค.
์ข์ ์ ์, ์ ์๊ฐํ์ต๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ด ๊ตฌํ๋๋ฉด ์ฐ๋ฆฌ๊ฐ ์ฐพ๊ณ ์๋ ๋์์ด ์ ๊ณต๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง๋ง ๋ ธ๋๋น 1๊ฐ์ ์คํฌ๋ฆฝํธ ๊ท์น์ ์ด๊ธฐ๋ ๊ฒ์ ์ฝ๋์ ๋ง์ ์๊ธฐ์น ์์ ๋ถ๋ถ์ ๋ฐํฅ์ ์ผ์ผํฌ ์ ์๋ ๋์ ์์์ด ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋๋ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ ๋ชจ๋ฅด๊ณ ๋ด C++๋ ํ๋ฒํ๊ธฐ ๋๋ฌธ์ ์๊ธ ํ ์๊ณผ ํจ๊ป ๊ทธ๊ฒ์ ๊ฐ์ ธ ๊ฐ๋ผ. Reduz๋ ์์์ ์๋ ๋ ธ๋๋น ํ๋ ์ด์์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ์๋ํ์ผ๋ฉฐ "๊ทธ๋งํ ๊ฐ์น๊ฐ ์๋ ๊ฒ์ด ๋ ๋ฌธ์ ์์ต๋๋ค"๋ผ๊ณ ๋งํ๋๋ฐ, ์ด๋ ๋์๊ฒ ํฉ๋ฆฌ์ ์ผ๋ก ๋ค๋ฆฝ๋๋ค.
ํฌ์ธํธ 1~4๋ ํ๋ฅญํ๊ณ 1-script ๊ท์น์ ์ด๊ธฐ์ง ์๊ณ ๋ฌ์ฑํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ถ์ ์ฌ์ฉ์ ์ ์ ์ ํ์ ์ด์จ๋ ์ธ์คํด์คํํ ์ ์์ผ๋ฏ๋ก ์ฌ์ฉ์๊ฐ ํธ์ง๊ธฐ์์ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ถ๋ช ํ ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฝ๋๋ฅผ ํตํด ๊ทธ๋ ๊ฒ ํ๋ ค๊ณ ํ ์๋ ์์ผ๋ฏ๋ก ํ์ํ ๊ฒ์ฌ์ ์ค๋ฅ๊ฐ ์์ด์ผ ํฉ๋๋ค.
ํฌ์ธํธ 6๋ ์ข๊ณ ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๊ฐ ์ฌ๊ธฐ์ ๋ฒ์ด๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ํฌ์ธํธ 6์ ๋ฐ๋ผ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๋ฉด ํ์ฌ ์ฌ์ฉ์ ์ง์ ๋
ธ๋์ ์ฐ๊ฒฐ๋ ์คํฌ๋ฆฝํธ๊ฐ ์(ํ์๋) ์คํฌ๋ฆฝํธ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค. ์ด์ (๊ธฐ๋ณธ) ์คํฌ๋ฆฝํธ๊ฐ ๋
ธ๋์์ ์ ๊ฑฐ๋ฉ๋๋ค. ์๋ก ์ฒจ๋ถ๋ ์คํฌ๋ฆฝํธ๋ ์๋ ์คํฌ๋ฆฝํธ์์ ํ์๋๋ฏ๋ก ๋ชจ๋ ๊ธฐ๋ฅ์ด ์ ์ง๋ฉ๋๋ค. ๋๋ ๊ธฐ๋ณธ ํด๋์ค(์ถ์์ด๋ ์๋๋ )๊ฐ ์๊ณ ํ์๋ ์คํฌ๋ฆฝํธ๋ฅผ ๋
ธ๋์ ์ฒจ๋ถํ๋ ๊ฒฝ์ฐ ์ข
์ข
์ด ์์
์ ์ํํฉ๋๋ค. ์ฌ๊ธฐ์ ์ฐจ์ด์ ์ ์ฌ์ฉ์ ์ ์ ์ ํ์ ๋ ์ด์ ํด๋น ์คํฌ๋ฆฝํธ๊ฐ ์ฒจ๋ถ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ ์ ์คํฌ๋ฆฝํธ๋ ๋จ์ํ ์ฌ์ฉ์ ์ ์ ๋
ธ๋์ ์ด๋ฆ์ด ์๋๋ผ extends "res://addons/path/to/base-script.gd"
๋ผ๊ณ ๋งํด์ผ ํ๋ค๋ ๊ฒ์
๋๋ค. ๋ค์ ์๊ฐํด ๋ณด๋ฉด remove_custom_type()
๊ฐ ํธ์ถ๋์ง ์์๊ณ ์ฒจ๋ถ๋ ์คํฌ๋ฆฝํธ๊ฐ ์ฌ์ ํ ์ด์ ์คํฌ๋ฆฝํธ์์ ํ์๋๋ฏ๋ก ์ด๊ฒ์ด ํ์ํ์ง ์์ ์ ์์ต๋๊น? ์ด ์ ์ ๋ํด ๋ช
ํํ ํด ์ฃผ์ญ์์ค.
ํฌ์ธํธ 7, 8, 9๋ ์ข๊ณ 1-script ๊ท์น์ ์ ์งํ๋ฉด์ ๊ทธ๋ค์ง ์ด๋ ต์ง ์์ ๊ฒ์ ๋๋ค. 1-script ๊ท์น์ ์ ์งํ๋ฉด 10์ด ํ์ํ์ง ์์ต๋๋ค. 11์ด ์ข์ต๋๋ค. ๋ ธ๋ ์ ํ์ ํ์ฅํ์ง ์๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ฐ๊ฒฐํ๋ ค๊ณ ํ๋ฉด ๋ด์ฅ ๋ ธ๋๊ฐ ์๋ํ๋ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด์จ๋ , ๊ทธ๊ฒ์ ๋ง์ ์์ ์ฒ๋ผ ๋ค๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ด๋ฏธ ๋ฒ ํ ๋ฒ์ ์ด๋ฏ๋ก ์ด๊ฒ์ด 3.1 ๋๋ 3.2์ฉ์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค(์ต๊ทผ ๋ก๋๋งต์ ๋ณธ ์ ์ด ์์).
@RodeoMcCabe ์, ์ด๊ฒ์ ํ์คํ 3.0์ฉ์ด ์๋๋๋ค.
๋ ธ๋๋น 1๊ฐ์ ์คํฌ๋ฆฝํธ ๊ท์น์ ์ด๊ธฐ๋ ๊ฒ์ ์ฝ๋์ ์์์น ๋ชปํ ๋ง์ ๋ถ๋ถ์ ๋ฐํฅ์ ์ผ์ผํฌ ์ ์๋ ๋์ ์์์ด ๋ ์ ์์ต๋๋ค.
๋ด ์๊ฐ๊ณผ ์ผ์น ํด. Object๋ ์ฌ์ฉ์ ์ ์ ๋ฐฑ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ธ์ํ์ง๋ง ๋ค๋ฅธ ๊ฐ์ฒด๋ ์ด๋ฅผ ์ธ์ํ์ง ๋ชปํ๊ณ ๋จ์ํ ๊ฐ์ฒด๊ฐ ๋จ์ผ ์คํฌ๋ฆฝํธ๋ฅผ ๊ฐ๋ ๊ฒ์ผ๋ก ์ธ์ํ๋ ๊ณต์ฉ ์ธํฐํ์ด์ค๋ฅผ ์๊ฐํ๊ณ ์์ต๋๋ค. ํธ๋ฆญ์ ์คํฌ๋ฆฝํธ ์์ฑ์ ๋ํ setter ๋ฐ getter๋ฅผ ํธ์งํ๋ ๊ฒ์ ๋๋ค. getter๋ null์ ํ์ธํด์ผ ํฉ๋๋ค. null์ด๋ฉด ๋์ ๋ฐฑ์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ฐํํด์ผ ํฉ๋๋ค. setter๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ์คํฌ๋ฆฝํธ๊ฐ ๋ฐฑ์ ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฅํ๋์ง ๋ค์ ํ์ธํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ด๋ป๊ฒ๋ ์คํจ๋ฅผ ๋ณด๊ณ ํด์ผ ํฉ๋๋ค.
์ถ์ ์ฌ์ฉ์ ์ ์ ์ ํ์ ์ด์จ๋ ์ธ์คํด์คํํ ์ ์์ผ๋ฏ๋ก ์ฌ์ฉ์๊ฐ ํธ์ง๊ธฐ์์ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ถ๋ช ํ ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค.
์คํฌ๋ฆฝํ
์ธก๋ฉด(afaik)์๋ ์ถ์ ์ ํ์ด ์์ต๋๋ค. ์คํฌ๋ฆฝํธ๋ฅผ ์ถ์ํํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์๋ค๋ ๋ง์์ด์ ๊ฐ์? can_instance
๋ฉ์๋๋ ์คํฌ๋ฆฝํ
์ธก์ ๋
ธ์ถ๋์ง๋ง ์คํฌ๋ฆฝํธ ์์ฒด๊ฐ ์ ํจํ์ง ํ์ธํ๊ณ ๋๊ตฌ์ธ ๊ฒฝ์ฐ ScriptServer์์ ํ์ฌ ์คํฌ๋ฆฝํ
์ด ํ์ฑํ๋์ด ์๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ์คํฌ๋ฆฝํธ ์ ํ์ ์ถ์์ฑ๊ณผ๋ ์๋ฌด ๊ด๋ จ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
CreateDialog::_update_search
๋ฉ์๋๊ฐ ํ
์คํธ๋ฅผ ํ์์ผ๋ก ํ์ํ๊ฑฐ๋ ์ ํํ ์ ์๊ฒ ๋ง๋๋ ์์ ๋ฑ์ ์๊ธฐ ์ํด์๋ ํด๋์ค๊ฐ ์ถ์์ธ์ง ํ์ธํ ์ ์์ด์ผ ํฉ๋๋ค.
์ฐธ๊ณ ๋ก ๋ฌธ์ (#13401)์ ์ถ์์ ์ธ ๋ถ๋ถ์ ๋ํ ๋ฌธ์ ๋ฅผ ๋ง๋ค์์ต๋๋ค.
Object
์ ํ์ backup_script
private ๋ฉค๋ฒ๋ฅผ ์ถ๊ฐํ ๋ค์ ์ด๋ฅผ ์ฌ์ฉํ์ฌ script
์์ฑ ๊ฒ์ฌ๋ฅผ ์ํํ๋ฉด ์ ๋ฐ์ ์ผ๋ก ๊ฐ๋ฅํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ด ์ฌ์ฉ์ ์ง์ ๋ ธ๋์์ ์ํํ๋ ์์ ์ ๊ธฐ๋ณธ ์คํฌ๋ฆฝํธ๋ฅผ ์์ํ์ฌ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ์ ์ง์ ๋ ธ๋ ์คํฌ๋ฆฝํธ๋ฅผ ๋น์ด ์๊ฒ ๋ง๋๋ ๊ฒ์ ๋๋ค...
์๋ ์์์ ํ๋ฌ๊ทธ์ธ ์์ฒด์ ์ํฅ์ ๋ฏธ์น๋ฉฐ ํ๋ฌ๊ทธ์ธ์ ๋ณต์ ํ์ง ์๊ณ ๋ ๋ ์ด์ ๋ง๋ค ์ ์๊ฒ ์ฃ ?
Multiscript๋ ์ฌํด ๋ ๋ฒ์งธ๋ก ์ถ๊ฐ๋์์ผ๋ฉฐ ๋ค์ ์ฃฝ์ด๊ธฐ ์ฝ์ต๋๋ค(์ฌ๋ฌ ๋ฌธ์ ๋ฐ์).
์คํฌ๋ฆฝํธ ๋์ ์ฌ์ฉ์ ์ ์ ๋ ธ๋์ ๊ธฐ๋ฐ์ผ๋ก ์ฅ๋ฉด์ ํ์ฉํ๋ฉด ๋ฃจํธ์ ์คํฌ๋ฆฝํธ๊ฐ ์๋๋ก ํ ์ ์์ต๋๋ค.
๋ด ์ฌ์ฉ์ ์ง์ ๋ ธ๋์์ ์ํํ๋ ์์ ์ ๊ธฐ๋ณธ ์คํฌ๋ฆฝํธ๋ฅผ ์์ํ์ฌ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ์ ์ง์ ๋ ธ๋ ์คํฌ๋ฆฝํธ๋ฅผ ๋น์ด ์๊ฒ ๋ง๋๋ ๊ฒ์ ๋๋ค...
์ฃ์กํฉ๋๋ค. ์ด๊ฒ์ด ์ถ์์ฑ์ด๋ ์ด์ ์ ํ๋ ๋ค๋ฅธ ์ ์์ ์ํฅ์ ๋ฏธ์น๋ค๋ ๋ง์์ด์ ๊ฐ์? ์ด๊ฒ ์ด๋์ ์ฐ๊ฒฐ์ด ๋๋์ง ์๋ณด์ด๋ค์...
์๋ ์์์ ํ๋ฌ๊ทธ์ธ ์์ฒด์ ์ํฅ์ ๋ฏธ์น๋ฉฐ ํ๋ฌ๊ทธ์ธ์ ๋ณต์ ํ์ง ์๊ณ ๋ ๋ ์ด์ ๋ง๋ค ์ ์๊ฒ ์ฃ ?
/addons/
ํด๋์ ํ๋ฌ๊ทธ์ธ์ ๋ ๋ฒ ํฌํจํ๊ณ ํ๋ก์ ํธ ์ค์ ์ ํ๋ฌ๊ทธ์ธ ์น์
์์ ๋ ๋ค ํ์ฑํํ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค๊ณ ๋ง์ํ์๋ ค๋ ๊ฑด๊ฐ์? ๊ฐ์ ์ด๋ฆ์ผ๋ก ์ ์๋ ์ฌ๋ฌ ์ฌ์ฉ์ ์ ์ ์ ํ์ ๊ฐ์ง ์ ์์).
"ํ๋ฌ๊ทธ์ธ์ ๋ณต์ ํ์ง ์๊ณ ๋ ๋ ์ด์์ ๋ง๋ค ์ ์์ต๋๋ค."๋ผ๋ ๋ง์ด ๋ฌด์จ ๋ป์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋ ธ๋๋ฅผ ์์ฑํ๊ณ ์ ์๋ ์ฌ์ฉ์ ์ ์ ์ ํ ์คํฌ๋ฆฝํธ๋ฅผ ์๋ ์ฒจ๋ถํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ ์ ์ ์ ํ ๋ ธ๋์ ์ฌ๋ฌ ์ธ์คํด์ค๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๋ด ์ ์์ ๋ค์์ ์ํํ๋๋ก CreateDialog์ ์คํฌ๋ฆฝํธ ์์ฑ ํ๋ก์ธ์ค๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค.
backup_script
์์ฑ์ผ๋ก ์ค์ ํฉ๋๋ค(์คํฌ๋ฆฝํ
API์ ๋
ธ์ถ๋์ง ์์).Object
์ฝ๋๊ฐ ๋ค๋ฅธ ๋ชจ๋ ์ฌ๋์ด backup_script
๋ฅผ ๊ฐ์ฒด์ ๊ณต์ script
์์ฑ์ผ๋ก ๋ณด๋๋ก ์์ด๋ ์์
์ ์ฒ๋ฆฌํ๋๋ก ํฉ๋๋ค....๋์ ์...
script
์์ฑ์ผ๋ก ์ฌ์ฉ์ ์ ์ ์ ํ ์คํฌ๋ฆฝํธ๋ฅผ ์ฒจ๋ถํ์ญ์์ค.Multiscript๋ ์ฌํด ๋ ๋ฒ์งธ๋ก ์ถ๊ฐ๋์์ผ๋ฉฐ ๋ค์ ์ฃฝ์ด๊ธฐ ์ฝ์ต๋๋ค(์ฌ๋ฌ ๋ฌธ์ ๋ฐ์).
๋๋ ๋์ํ๋ค. ๋ฉํฐ์คํฌ๋ฆฝํ
๊ฐ์ฒด๋ ์ด ์์ ์์ ๋์ ์๊ฐ์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค(์ด์จ๋ ์ค์ ๋ก ํ์ํ์ง๋ ์์). ๊ทธ๊ฒ์ ๋ด๊ฐ ์ ์ํ๋ ๊ฒ์ด ์๋๋๋ค. ๊ณต๊ฐ ๋ณด๊ธฐ์์ Object
์๋ ์ฌ์ ํ 1๊ฐ์ ์คํฌ๋ฆฝํธ๋ง ์์ด์ผ ํ์ง๋ง ์คํฌ๋ฆฝํธ ์ญํ ์ ๋์ ํ๋ ๋ฐฑ์
์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค(๋ฐ๋ผ์ script
์์ฑ์ ์์ ์ ํ ๋น). ๊ธฐ๋ณธ script
์์ฑ์ด null / unloaded ๋ฑ์ผ๋ก ์ค์ ๋ ๋๋ง๋ค. ์ด๋ ๊ฒ ํ๋ฉด Object ํด๋์ค์ ๋ํ ์ฝ๋๋ฒ ์ด์ค์ ์ธํฐํ์ด์ค๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ "์ฌ์ฉ์ ์ ์ ์ ํ"์ ๋ณด๋ค ํจ๊ณผ์ ์ผ๋ก ์ง์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ฝ๋(์: CreateDialog
์์ ์ฌ์ฉ์ ์ ์ ์ ํ ์คํฌ๋ฆฝํธ๋ฅผ ํ ๋นํ๋ ์ฝ๋)๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ ์ ์๋ ์ด ๋ฐฑ์
์คํฌ๋ฆฝํธ ์์ฑ์ ๋ํ ์ ์ฉ setter/getter๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด script
์์ฑ์ด ์๋ํ๋ ๋ฐฉ์์ ๋ํ ์ตํธ์ธ ์์ ์ด ์ด๋ฃจ์ด์ง๋ฉฐ ์์ง์ ํ์ํ ๋ณ๊ฒฝ ์ฌํญ์ด ๋น๊ต์ ์ ์ต๋๋ค.
๋ ธ๋์ ์ํฉ์ ๋ง๋ ๋ฉ๋ด์ ๋ํ ์๋ก์ด ์ต์ ์ด "์์๋ ์คํฌ๋ฆฝํธ ๋ฐ๊พธ๊ธฐ" ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด ๋ฌธ์ ๋ ํ์ฌ ์คํฌ๋ฆฝํธ์์ ์์๋๋ ๊ฐ์ง๋ ๋ชจ๋ ์คํฌ๋ฆฝํธ๊ฐ ํฌํจ๋ ํ์ ๋ฉ๋ด์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ํด๋ฆญํ ๋ ๋์ "์ ์คํฌ๋ฆฝํธ"๊ฐ ์์ ์๋ ์์ต๋๋ค. ๋ํ ์์๋ "ํ์ฅ" ํ๋์ ์คํฌ๋ฆฝํธ์ ๊ฒฝ๋ก๋ฅผ ํ์ํด์ผ ํฉ๋๋ค.
"๋์ฒด ๋ฐ ์์ ์คํฌ๋ฆฝํธ" ํธ์ง๊ธฐ ๋๊ตฌ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ด ๋ ์ฝ๊ณ ํฌ๋ช ํ์ง ์์ต๋๊น? ๋ด ๋ง์, ์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ Addon ๋ ธ๋๋ฅผ ์์ฑํ ๋ ์คํฌ๋ฆฝํธ๊ฐ ์์ ๊ฒ์ผ๋ก ์์ํ๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ์ผ ๋ฟ์ ๋๋ค. ๊ทธ๋ฌ๋ addon ๋ ธ๋๋ ์ค์ ๋ก Create Node ํธ๋ฆฌ์ ์ถ๊ฐํ๋ ์ฌ์ฉ์ ์ ์ ๋ ธ๋์ผ ๋ฟ์ด๋ฉฐ ์ฌ์ฉ์๋ ์ด๋ฅผ ์์์ผ ํฉ๋๋ค. UX ๊ด์ ์์(์ ๋ ์ ๋ฌธ๊ฐ๋ ์๋์ง๋ง) ํธ์๋ฅผ ์ํด ํฌ๋ช ์ฑ์ ํฌ์ํด์๋ ์ ๋๋ค๊ณ ์๊ฐํฉ๋๋ค.
@MarianoGnu @henriquelalves ๋ ๋ค ์ค์ ๋ก ๊ฐ์ง ์์ต๋๋ค. "์ปค์คํ ์ ํ"์ ์๋ฏธ๋ ์์ง ๋ด ๋ ธ๋ ์ ํ์ ์๋ฎฌ๋ ์ด์ ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด๋ ์คํฌ๋ฆฝํธ ์์ฒด๋ฅผ ์ ๊ฑฐํ ์ ์์์ ์๋ฏธํฉ๋๋ค. Node2D๊ฐ ์์ํ ๋ ธ๋์ฒ๋ผ ์๋ํ๋๋ก ํ๊ธฐ ์ํด Node2D์ Node2D์ฑ์ ์ ๊ฑฐํ ์ ์๋ ๊ฒ๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋ ธ๋์ ๋ถ์ฌํ๋ ๊ธฐ๋ฅ์ด ๊ธฐ๋ณธ ์ ๊ณต๋ฉ๋๋ค.
์์ Akien์ ์ธ๊ธฐ ์๋ ์ถ์ฒ ๊ฒ์๋ฌผ์ ์ ์ฌํ ์ธ๋ถ ์ ๋ณด๋ฅผ ๋ค๋ฃน๋๋ค.
์ฌ๊ธฐ์ ์์ ์ ์ปค์คํ ๋ ธ๋๋ฅผ ์ ์ํ๋ ์คํฌ๋ฆฝํธ๋ ์ธ์คํด์คํ๋ ๋ ธ๋์ ์์ฑ์ด ์๋๋ผ ํด๋น ์ ํ์ ์์ฑ์ด๊ธฐ ๋๋ฌธ์ ์จ๊ฒจ์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ์ด ์คํฌ๋ฆฝํธ๋ ์ฌ์ฉ์ ์ ์ ๋ ธ๋์ ์์ฑ์ ๋ถ์ฌํด์ผ ํ์ง๋ง ๋ด์ฅ ๋ ธ๋์ C++ ํด๋์ค์ฒ๋ผ ์ธ์คํด์ค ๋ ธ๋์ ์ฌ์ฉ์์๊ฒ ๋ณด์ด์ง ์์์ผ ํฉ๋๋ค. API๋ฅผ ์ ๊ณตํ์ง๋ง ์์ ์ด ๋ถ๊ฐ๋ฅํ๊ณ ํ์ฅ๋ง ๊ฐ๋ฅํฉ๋๋ค.
"์์๋ ์คํฌ๋ฆฝํธ์ ๋ํ ๋์ฒด" ํญ๋ชฉ์ ์ฉ์ดํ๊ฒ ํ๋ ํธ์ง๊ธฐ ๋๊ตฌ๋ฅผ ๋ง๋ค๋ฉด ๋ฉ์ง๊ฒ ์ง๋ง, ์ด๋ค ๊ธฐ๋ฅ๋ ์ฌ์ฉ์ ์ ์ ์ ํ ์คํฌ๋ฆฝํธ ๋๋ ๊ทธ ์๋์ ์๋ ์คํฌ๋ฆฝํธ ๊ณ์ธต ๊ณ์ธต์ ๋ณผ ์ ์์ด์ผ ํฉ๋๋ค. "๋ด์ฅ๋" ๋์์ ์๋ฎฌ๋ ์ด์ ํฉ๋๋ค.
์ค์ ๋ก gdscript_parser
๋ฐ ๊ธฐํ ์คํฌ๋ฆฝํ
์ฝํ
์ธ ์์ ์ฝํ
์ธ ์ ์ก์ธ์คํ๋ ค๋ฉด $# EditorNode::get_editor_data().get_custom_types()
๊ฐ ์๋ ClassDB ์ฑ๊ธํค์ ์ฌ์ฉ์ ์ ์ ์ ํ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์๋์ง ํ์ธํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค. ๋ชจ๋์ ํด๋น ์ ๋ณด์ ์ก์ธ์คํ ์ ์์ง๋ง ์ค์ ๋ก ์ก์ธ์คํ ์ ์์ด์ผ ํฉ๋๋ค.
๋๋ ์คํฌ๋ฆฝํธ๋ฅผ ๋ ธ์ถ์ํค๋ ๋ฐ ๊ฐ์ธ์ ์ธ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ ์ค์ ๋ก ์ฉ์ด์ ์ฒ ํ์ ๋ฌธ์ ์ ๋๋ค. ๊ทํ๊ฐ ์ธ๊ธํ ๋ฐ์ ๋ฐ๋ฅด๋ฉด ํ ์ ์๋ ์ผ์ ClassDB์ ์ ํด๋์ค๋ฅผ ์ถ๊ฐํ๊ณ ๋์ ํด๋น ํด๋์ค์ ์คํฌ๋ฆฝํธ ์์ฑ์ ์ถ๊ฐํ๋ ๊ฒ์ ๋๋ค. ๋ ธ๋์ ํด๋์ค๋ ๋ฉ์๋ ์คํฌ๋ฆฝํธ๊ฐ ์กด์ฌํ๋์ง ํ์ธํ๊ณ ํด๋์ค ๋ถ๋ชจ๋ฅผ ํธ์ถํ๊ธฐ ์ ์ ํธ์ถํด์ผ ํฉ๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ๊ฐ๋ฅํ๋ค๊ณ ์๊ฐํ์ง๋ง RC1 ์ด์ ์ ์ํํ์ง ์์ผ๋ฉด ์ด์ ๋ฒ์ ๊ณผ์ ์ญํธํ์ฑ์ ๊นจ๋จ๋ฆด ๊ฒ์ ๋๋ค.
@willnationsdev ์ ๋ ์ปค์คํ ์ ํ์ด ์์ง ๋ด ๋ ธ๋๋ก ์ทจ๊ธ๋๋ ๊ฒ์ ์ ์ ์ผ๋ก ๋์ํ์ง ์์ต๋๋ค. ์ ์๊ฒ Editor Addons์ '๊ฐ๋ ฅํจ'์ ์ฌ์ฉ์ ์ ์ ๋ ธ๋ ๋ฐ ํธ์ง๊ธฐ ๋๊ตฌ์ "ํฉ"์ ๋ง๋ค๊ณ github๋ฅผ ํตํด ๊ณต์ ํ๋ ๊ฒ์ด ์ผ๋ง๋ ์ฌ์ด์ง์ ๋ฌ๋ ค ์์ต๋๋ค. ์ด๋ฌํ ๋ชจ๋ ๋๊ตฌ์ ๋ ธ๋๋ ์ฌ์ค ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ์ ์ ์๋ ์ฅ๋ฉด๊ณผ ์คํฌ๋ฆฝํธ์ด์ง๋ง Godot๋ ์ด๋ฅผ ์ฉ์ดํ๊ฒ ํ๊ธฐ ์ํด Addon API๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ฒ์ ์ฌ์ฉํ์ ๋ ๋๋ ์ ๋์จ์ด ์คํฌ๋ฆฝํธ๊ฐ ์์ ๊ฒ์ด๋ผ๊ณ ์์ํ์ง๋ง ์์ง ์์ฒด๊ฐ ์์ง ๋ด ๋ ธ๋๋ก ์ทจ๊ธํ๋ ๊ฒ์ฒ๋ผ ๋ณด์๊ธฐ ๋๋ฌธ์ด๋ฉฐ ์ด๋ ์ํคํ ์ฒ๊ฐ ์๋๋ผ UX ๋ฌธ์ ์ ๋๋ค. ๋ด๊ฐ ์ด๊ฒ์ ๊ณ ์น ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ค์ ๋งํ์ง๋ง, ๋๋ ํ์คํ ์ ๋ฌธ๊ฐ๊ฐ ์๋๋ฏ๋ก Custom-Types != In-Engine Nodes์ ๋ํ ๋์ ์๋ ๊ฐ์ ์ด ํ๋ฆด ์ ์์ต๋๋ค. ๋ํ, ๊ทํ์ ์๋ฃจ์ ์ ์ด ์ค๋ ๋์์ ๋ด๊ฐ ๋ณธ ๊ฒ ์ค ๊ฐ์ฅ ๋ช ํํ ๊ฒ์ด๋ฏ๋ก Godot ๊ฐ๋ฐ์ด ๊ทธ๋ฐ ์์ผ๋ก ์งํ๋๋์ง ์ถฉ๋ถํ ์ดํดํฉ๋๋ค.
ํธ์ง: ๋๋ ๊ทธ๊ฒ์ ๋ค์ ์ฝ์๊ณ , ๋ด "ํด๊ฒฐ์ฑ "์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋น์ ์ ์ฒซ 6๊ฐ ์๋ฃจ์ ๋จ๊ณ์ ๋๋ค. ํํํ.
@henriquelalves @MarianoGnu ๋๋ ๊ทธ๊ฒ๋ค์ ํผํฉ์ด ํ์คํ ํ์ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ฌ์ฉ์ ์ ์ ์ ํ ํด๋์ค๋ฅผ ClassDB์ ์ถ๊ฐํ๋ ๊ฒ์ ํ์์ ๋๋ค. Henrique๊ฐ ์ ์ํ ์ธ ๊ฐ์ง ์ ์์ ๋ชจ๋ ์ ๋ง ์ข์ํฉ๋๋ค. ํนํ ์์ด๋์ด 2(๋ด ๋ณ๋์ ์ฌ์ฉ์ ์ ์ ์ ํ ์์ด์ฝ ์ ์๋ณด๋ค ํจ์ฌ ๋ซ์ต๋๋ค). ๊ทธ๋ฆฌ๊ณ "์ฌ์ฉ์ ์ ์ ์ ํ์ด ๋ฌด์์ธ์ง"๊ฐ ์ด๋ ์ ๋ ํฌ๋ช ํ๊ฒ ์ ์ง๋์ด์ผ ํ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ๋๋ ๊ท ํ์ด ์ ์ง๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ฌ๋๋ค์ ๋ฌด์ธ๊ฐ๊ฐ ์ฌ์ฉ์ ์ ์ ์ ํ์ธ์ง ์ฌ๋ถ์ ๊ทธ๊ฒ์ด ์๋ฏธํ๋ ๋ฐ๋ฅผ ์ดํดํ ์ ์์ด์ผ ํ์ง๋ง ์ฌ์ฉ์ ์ ์ ์ ํ์ด ์์ง ์ ํ์ฒ๋ผ ๋๊ปด์ง๋๋ก ํ ์ ์๋ ํ ๋ง์ด ํด์ผ ํฉ๋๋ค.
@willnationsdev ๋๋ assetlib์์ ์ด๊ฒ์ ๊ฐ์ ธ ์์ ์ฌ์ฉ์ ์ ์ ๋
ธ๋์ ์ฝ๋๋ฅผ "๊ธฐ๋ณธ"์คํฌ๋ฆฝํธ๋ก ์ฎ๊ฒผ์ต๋๋ค.
์ถฉ๋_๊ฒฝ๋ก_2d-1-modified.zip
๋ด๊ฐ ๋ณผ ์ ์๋ ์ฆ๊ฐ์ ์ธ ๋ฌธ์ ๋ ํ๋ฌ๊ทธ์ธ์ด ์คํฌ๋ฆฝํธ๋ฅผ ๋ก๋ํ๊ณ ํด๋น ์คํฌ๋ฆฝํธ๊ฐ ๊ณ ์ ํ๋ค๋ ๊ฒ์ ๋๋ค. ๋ค๋ฅธ ์ฌ์ฉ์ ์ ์ ๋ ธ๋๋ฅผ ์ถ๊ฐํ๋ฉด _๊ฐ์_ ์คํฌ๋ฆฝํธ๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด ๊ฒฝ์ฐ ํ๋ฌ๊ทธ์ธ์ ๋ํ ์คํฌ๋ฆฝํธ ๊ต์ฒด๋ ๋ฌด์์ ์๋ฏธํฉ๋๊น? (์ด์ฉ๋ฉด ์๋ฌด๊ฒ๋, ํ์คํ์ง ์์ต๋๋ค).
์คํฌ๋ฆฝํธ๋ฅผ ๊ต์ฒดํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ผ๋ฉด(์ผ๋ถ ๊ฒฝ์ฐ ๋๊ตฌ ๋ชจ๋๊ฐ ๋ง์กฑ์ค๋ฝ์ง ์์ ์ ์์) ์ฌ์ฉ์ ์ง์ ๋ ธ๋ ๋ฉ๋ด์ "์ฌ์ฉ์ ์ง์ ์คํฌ๋ฆฝํธ ํ์ฅ" ํญ๋ชฉ์ ์ถ๊ฐํ์ฌ ํด๋น ๊ต์ฒด ํ๋ก์ธ์ค๋ฅผ ์ํํ ์ ์์ต๋๋ค.
@henriquelalves @eon-์ฐ๋ฆฌ๋ ๊ฐ์ ์๊ฐ์ ํ๊ณ ์๋ ๊ฒ ๊ฐ์์. ๋๋ ์ด๊ฒ์ด ๋ฌด์๋ณด๋ค UX ๋ฌธ์ ๋ผ๋ ์ ์ ๋์ํฉ๋๋ค. ์ง๊ธ๊น์ง ์ ๋ ์ด ์ ๊ทผ ๋ฐฉ์์ ๋ถ๋ถ์ ์ ๋๋ค. ์๋ํ๋ฉด ๊ทธ๊ฒ์ด ๊ฐ๋ฅํ ํ ๋จ์ํ๊ฒ ์ ์ง๋๊ณ ์๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๋ ํญ์ ์ข์ IMO์ ๋๋ค.
์คํฌ๋ฆฝํธ๋ฅผ ๊ต์ฒดํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ผ๋ฉด(์ผ๋ถ ๊ฒฝ์ฐ ๋๊ตฌ ๋ชจ๋๊ฐ ๋ง์กฑ์ค๋ฝ์ง ์์ ์ ์์) ์ฌ์ฉ์ ์ง์ ๋ ธ๋ ๋ฉ๋ด์ "์ฌ์ฉ์ ์ง์ ์คํฌ๋ฆฝํธ ํ์ฅ" ํญ๋ชฉ์ ์ถ๊ฐํ์ฌ ํด๋น ๊ต์ฒด ํ๋ก์ธ์ค๋ฅผ ์ํํ ์ ์์ต๋๋ค.
ํ์ฅ ์คํฌ๋ฆฝํธ๋ ํ๋ฌ๊ทธ์ธ ์คํฌ๋ฆฝํธ๋ฅผ ์์๋ฐ์์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ต์ฒดํด๋ ๋ฌธ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ค์, ๋๋ ์ฝ๋๋ฒ ์ด์ค์ ์ต์ํ์ง ์์ต๋๋ค. ์ด์จ๋ , ๋๋ 2 ์ผํธ๋ฅผ ์ฃผ์์ผ๋ฏ๋ก ์ฌ๊ธฐ์์ ์ค์ ๊ฐ๋ฐ์์๊ฒ ๋งก๊ธธ ๊ฒ์ ๋๋ค. ;)
@willnationsdev ์ฃ์กํฉ๋๋ค. ์ถ์์ ์ธ ๋ด์ฉ์ ํผ๋ํ์ต๋๋ค. ๋ด "์ถ์" ๊ธฐ๋ณธ ํด๋์ค์๋ ๋จ์ํ _init()์ ์ธ์ ๋ฌธ์ด ์์ด ์ค์๋ก ์ธ์คํด์คํํ๋์ง ์๋ ค์ค๋๋ค....
์ฌ๊ธฐ์ ์ฐจ์ํ๊ธฐ ์ํด ์ฌ์ฉ์ ์ ์ ๋ ธ๋ ์ ํ์ ์ฌ์ฉ์ ์ ์ ์คํฌ๋ฆฝํธ ์ค์ , GDScript์์ ์ด๋ฆ์ผ๋ก ์ฐธ์กฐ ๋ฐ ์์ํ๋ ๊ธฐ๋ฅ, ์ ํ์ ๊ธฐ๋ณธ ์คํฌ๋ฆฝํธ๋ฅผ ์ ๊ฑฐํ ์ ์๋ ๊ธฐ๋ฅ์ ํฌํจํ์ฌ ์ ๋์ ์ผ๋ก ์์ง ์ ํ์ฒ๋ผ ์๋ํด์ผ ํฉ๋๋ค. ์ด๋ ์์ง์ ์ํด ๊ตฌํ๋ ๋ ธ๋์ ๋์์ ๋ชจ๋ฐฉํ์ฌ ๋ด๋ถ ์ผ๊ด์ฑ๊ณผ ์ฌ์ฉ ์ฉ์ด์ฑ์ ์ด์งํฉ๋๋ค.
๊ทธ๊ฒ์ด "์ปค์คํ " ๋ ธ๋์์ ๋ณด์ฌ์ฃผ๋ ๋ฌธ์ ์ ๊ด๋ จํ์ฌ, ๋๋ ๋ ธ๋๊ฐ ๊ฐ์ฒด์ ๊ธฐ๋ณธ ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ณด์ฌ์ฃผ๋ "๋์๋ง์ ํ์" ์์ ๊ฒ์ฌ๊ธฐ ๋๋กญ๋ค์ด์ ํญ๋ชฉ์ ๊ฐ์ง ๊ฒ์ ์ ์ํฉ๋๋ค. ์ฌ์ฉ์์ ๊ฐ๋ฐ์์ ๊ด์ ์์, ๋น์ ์ ๊ทธ๊ฒ์ ์ฌ์ฉํ๋ ๊ฒ๋ง์ผ๋ก๋ ๊ทธ๊ฒ์ด ์ฌ์ฉ์ ์ ์ ๋ ธ๋๋ผ๋ ๊ฒ์ ์์์ผ ํ๋ฉฐ(๋๊ฐ ๊ทธ๊ฒ์ ํ๋ก์ ํธ์ ์ถ๊ฐํ์ต๋๊น?) "์ฌ์ฉ์ ์ ์" ๋ ธ๋(IMO)์ ๋ชฉํ๋ ๊ตฌ๋ณํ ์ ์๋ ์ ํ์ GDScript์์ ์ ์ํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค. ๋ด์ฅ ์์ง ์ ํ์์.
@Web-eWorks ์ค์ ๋ก ์ด ์์
์ ํ๊ณ ์์ผ๋ฉฐ(์ง๊ธ ์ด ์๊ฐ) ์๋นํ ๋ถ๋ถ์ ์๋ฃํ์ต๋๋ค(์์ง ๊ฐ ๊ธธ์ด ์กฐ๊ธ ๋จ์ ์์ต๋๋ค). Object ํด๋์ค์ ๋ฐฑ์
์คํฌ๋ฆฝํธ๋ฅผ ์ค์ ํ๊ณ ์ API๋ฅผ ์ฌ์ฉํ๋๋ก EditorPlugin ๋ฉ์๋๋ฅผ ์
๋ฐ์ดํธํ๋ ๊ฒ๊ณผ ํจ๊ป ClassDB์ ์ฌ์ฉ์ ์ง์ ์ ํ์ ๋ํ ์ ์ฅ์๋ฅผ ๋ง๋ค์์ต๋๋ค. ์ฌ์ ํ ๊ด๋ จ ClassDB ํจ์( can_instance
๋ฐ get_parent_class
๋ฑ)๋ฅผ ์
๋ฐ์ดํธํ๊ณ ๋ชจ๋ Editor/CreateDialog ํญ๋ชฉ์ ์
๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
@willnationsdev ClassDB ์ ๋ฑ๋กํ๋ค๋ ๊ฒ์ ํ๋ฌ๊ทธ์ธ์ ๋ง๋๋ ์ฌ๋๋ค์ด ์ถฉ๋์ ๋ฐฉ์งํ๊ธฐ ์ํด ํด๋์ค์ ์ ๋์ฌ๋ฅผ ๋ถ์ฌ์ผ ํ๋ค๋ ์๋ฏธ์ด๊ธฐ๋ ํฉ๋๋ค^^"
@Zylann ์, ๋ถํํ๋ ํ์ํฉ๋๋ค.
์ด ์์ ์์ ๋ฐ์ธ๋ฉ๊ณผ ํต์ฌ ๋ณ๊ฒฝ ์ฌํญ์ ๋๋ถ๋ถ์ ์ ๋ฆฌํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด์ Editor, CreateDialog ๋ฐ EditorHelp / DocData ํด๋์ค(๋ฐ GDScript ์ปดํ์ผ๋ฌ)๋ฅผ ์ ๋ฐ์ดํธํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์์ ์ธ๊ธํ๋ฏ์ด.. ์์ง ์ ์๋ ์๋ฃจ์
์ด ์ข์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ฐ์ฅ ๊ฐ๋ฅ์ฑ์ด ๋์ ๊ฒ์ ์๋ํ๊ธฐ ์ ์ ์ ์๊ฒ ํ์ธํ์ญ์์ค.
๊ฑฐ๋ถ๋์์ต๋๋ค.
2018๋ 2์ 7์ผ 20์ 5๋ถ์ "Will Nations" [email protected] ์์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
@Zylann https://github.com/zylann ์, ํ์ํ ๊ฒ์ ๋๋ค.
์ํ๊น๊ฒ๋.์ด ์์ ์์ ๋๋ ๋๋ถ๋ถ์ ๋ฐ์ธ๋ฉ๊ณผ ํต์ฌ์ ์ ๋ฆฌํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ณ๊ฒฝ. Editor, CreateDialog ๋ฐ
์ด์ EditorHelp / DocData ํด๋์ค.โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/godotengine/godot/issues/6067#issuecomment-363893711 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AF-Z2xIYRcs0BFDqTyiFwqlhQWTqjEZtks5tSgIVgaJpZM4JejbZ
.
@reduz ๊ธ์, ๋๋ ๋น์ ์ด ์ด์ ์ ์ ๊ธฐํ ์ฐ๋ ค๋ฅผ ๊ณ ๋ คํ๋ ค๊ณ ๋ ธ๋ ฅํ์ต๋๋ค.
๋๋ ์ด๋ค ์ข ๋ฅ์ ๋ฉํฐ ์คํฌ๋ฆฝํธ ์์คํ ๋ ๊ตฌํํ์ง ์์ต๋๋ค. ๋๋ ๋ํ ClassDB์์ ClassInfo ๊ฐ์ฒด๋ก ๊ฐ์ฅํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ค์ง ์์ต๋๋ค. ์ง๊ธ๊น์ง ๋ด๊ฐ ํ ์ผ์ ClassDB์ ์์ ๊ณ์ธต์ ์คํฌ๋ฆฝํธ(RefPtr๋ฅผ ํตํด)๋ฅผ ์ฒจ๋ถํ๋ ๊ฒ๋ฟ์ ๋๋ค. Object ํด๋์ค๋ ์ผ๋ฐ ์คํฌ๋ฆฝํธ ํ ๋น์ด ๋ฐฑ์ ์คํฌ๋ฆฝํธ์ ์์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ์นจํดํ๋ ค๊ณ ์๋ํ ๋๋ง๋ค "backup_script"๋ง ์ฌ์ฉํฉ๋๋ค.
์ ๊ทธ๋ ๊ตฐ์.. ๊ทธ๋ผ ์ด๊ฒ์ ์ฌ์ฉ ์ฌ๋ก๋ ๋ฌด์์ ๋๊น?
2018๋ 2์ 7์ผ 20์ 32๋ถ์ "Will Nations" [email protected] ์์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
@reduz https://github.com/reduz ๊ธ์, ๋๋
์ด์ ์ ์ ๊ธฐํ ์ฐ๋ ค ์ฌํญ์ ์ค๋ช ํฉ๋๋ค.๋๋ ์ด๋ค ์ข ๋ฅ์ ๋ฉํฐ ์คํฌ๋ฆฝํธ ์์คํ ๋ ๊ตฌํํ์ง ์์ต๋๋ค. ๋๋ ์๋์ผ
์คํฌ๋ฆฝํธ๋ฅผ ClassDB์์ ClassInfo ๊ฐ์ฒด๋ก ๊ฐ์ฅํฉ๋๋ค. ๋ด๊ฐ ๊ฐ์ง ๋ชจ๋
์ง๊ธ๊น์ง RefPtr์ ํตํด ์คํฌ๋ฆฝํธ๋ฅผ ์์์ ์ฒจ๋ถํ์ต๋๋ค.
ClassDB์ ๊ณ์ธต. Object ํด๋์ค๋
์ผ๋ฐ ์คํฌ๋ฆฝํธ ํ ๋น์ด ์นจํด๋ฅผ ์๋ํ ๋๋ง๋ค "backup_script"
๋ฐฑ์ ์คํฌ๋ฆฝํธ์ ์์ ๊ณ์ธต์์.โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/godotengine/godot/issues/6067#issuecomment-363900920 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AF-Z2yn68Iy6AgAKJHZ4qImH4UBAm5skks5tSghSgaJpZM4JejbZ
.
์ฌ์ฉ ์ฌ๋ก๋ ๋๊ตฐ๊ฐ EditorPlugin์ ์ฌ์ฉํ์ฌ ์์ง์ ์๋ก์ด ์ ํ์ ๋
ธ๋๋ฅผ ๋์
ํ๊ณ ์ถ์ง๋ง ํด๋น ๋
ธ๋์ ์คํฌ๋ฆฝํ
๋ ์ ํ์ด ํธ์ง ๊ฐ๋ฅํ๊ธฐ๋ฅผ ์ํ์ง ์๋ ๊ฒฝ์ฐ์
๋๋ค(๊ทธ๋ค์ ๋
ธ๋์์ ์ํธ ์์ฉ์ด ์์ง ๋ด ์ ํ์ ๋ชจ๋ฐฉํ๊ธฐ๋ฅผ ์ํฉ๋๋ค. ). ๋ฐ๋ผ์ ์๋ฅผ ๋ค์ด ๋ฐฑ์
์คํฌ๋ฆฝํธ๋ง ์๋ ๋
ธ๋์์ get_script()
๋ฅผ ์๋ํ๋ฉด null์ ๋ฐํํฉ๋๋ค. set_script(null)
์๋ํ๋ฉด ์คํฌ๋ฆฝํธ๊ฐ ๋ฐฑ์
์คํฌ๋ฆฝํธ๋ก ์ค์ ๋ฉ๋๋ค. set_script(a_script)
๋ฅผ ์๋ํ๋ฉด ์ ์คํฌ๋ฆฝํธ๊ฐ ๋ฐฑ์
์คํฌ๋ฆฝํธ์ ์์ ๊ณ์ธต์ ์๋ ๊ฒฝ์ฐ์๋ง ์คํฌ๋ฆฝํธ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ํ ๋นํฉ๋๋ค.
UX์ ๊ฒฝ์ฐ ๋ฐฑ์ ์คํฌ๋ฆฝํธ๋ง ์์ผ๋ฉด ์คํฌ๋ฆฝํธ ์์ด์ฝ์ด ํธ์ง๊ธฐ์ ํฌ๋ช ์์ด์ฝ์ผ๋ก ํ์๋๋๋ก ํ ๊ณํ์ ๋๋ค. ์ด ๊ฒฝ์ฐ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ๋ ๋ฒํผ์ ์ฌ์ ํ โโ"์คํฌ๋ฆฝํธ ์ ๊ฑฐ" ๋ฒํผ์ด ์๋ "์คํฌ๋ฆฝํธ ์ถ๊ฐ" ๋ฒํผ์ด๋ฉฐ, ์ด๋ฅผ ํด๋ฆญํ๋ฉด ํ ์คํธ์ ์ ํ ์ด๋ฆ์ด ๋ฏธ๋ฆฌ ์ฑ์์ง๋๋ค(๋น๋ก ์ฌ์ฉ์๊ฐ ์คํฌ๋ฆฝํธ ์ ํ์ GDScript/VisualScript ๋ฑ์์ ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ ์คํฌ๋ฆฝํธ ๊ฒฝ๋ก๋ก ๋ฏธ๋ฆฌ ์ฑ์). ๋ค๋ฅธ ์คํฌ๋ฆฝํธ๊ฐ ํ ๋น๋๋ฉด ํฌ๋ช ์์ด์ฝ์ด ๋ค์ ๋ถํฌ๋ช ํด์ง๋๋ค. ๋ ๊ฒฝ์ฐ ๋ชจ๋ ์คํฌ๋ฆฝํธ ์์ด์ฝ์ ํด๋ฆญํ๋ฉด ํ์ฑ ์คํฌ๋ฆฝํธ ์์ค ์ฝ๋(๋ค๋ฅธ ์คํฌ๋ฆฝํธ๊ฐ ์๋ ๊ฒฝ์ฐ ๋ฐฑ์ ์คํฌ๋ฆฝํธ ์์ค ์ฝ๋)๋ก ์ด๋ํฉ๋๋ค.
๋๋ ์ด๊ฒ์ ์ด์ ์ ์ค์ ๋ก ๋ณด์ง ๋ชปํ๋ค๋ ๊ฒ์ ์ธ์ ํด์ผ ํฉ๋๋ค.
ํน์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์๊ฐํ๊ณ ์์ต๋๊น?
2018๋ 2์ 7์ผ 20์ 46๋ถ์ "Will Nations" [email protected] ์์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
์ฌ์ฉ ์ฌ๋ก๋ ๋๊ตฐ๊ฐ๊ฐ ์๋ก์ด ์ ํ์ ๋ ธ๋๋ฅผ ์๊ฐํ๋ ค๋ ๊ฒฝ์ฐ์ ๋๋ค.
EditorPlugin์ ์ฌ์ฉํ๋ ์์ง์ด์ง๋ง ์คํฌ๋ฆฝํ ๋ ์ ํ์
ํธ์ง ๊ฐ๋ฅํ ๋ ธ๋(๊ทธ๋ค์ ๋ ธ๋์์ ์ํธ ์์ฉ์ด ๋ชจ๋ฐฉํ๊ธฐ๋ฅผ ์ํฉ๋๋ค.
์์ง ๋ด ์ ํ). ์๋ฅผ ๋ค์ด ๋ ธ๋์์ get_script()๋ฅผ ์๋ํ๋ฉด
๋ฐฑ์ ์คํฌ๋ฆฝํธ๋ง ์์ผ๋ฉด null์ ๋ฐํํฉ๋๋ค. ๋ด๊ฐ ์๋ํ๋ฉด
set_script(null), ์คํฌ๋ฆฝํธ๋ ๋ฐฑ์ ์คํฌ๋ฆฝํธ๋ก ์ค์ ๋ฉ๋๋ค. ๋ง์ฝ ๋ด๊ฐ
set_script(a_script)๋ฅผ ์๋ํ๋ฉด ์ฑ๊ณต์ ์ผ๋ก ํ ๋น๋ฉ๋๋ค.
์ ์คํฌ๋ฆฝํธ๊ฐ ๋ฐฑ์ ์ ์์ ๊ณ์ธต ๊ตฌ์กฐ์ ์๋ ๊ฒฝ์ฐ ์คํฌ๋ฆฝํธ
์คํฌ๋ฆฝํธ.UX์ ๊ฒฝ์ฐ ์คํฌ๋ฆฝํธ ์์ด์ฝ์ด ํธ์ง๊ธฐ์ ํ์๋๋๋ก ํ ๊ณํ์ ๋๋ค.
๋ฐฑ์ ์คํฌ๋ฆฝํธ๋ง ์๋ ๊ฒฝ์ฐ ํฌ๋ช ์์ด์ฝ์ ๋๋ค. ๊ทธ ๊ฒฝ์ฐ,
์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ๋ ๋ฒํผ์ ์ฌ์ ํ โโ"์คํฌ๋ฆฝํธ ์ถ๊ฐ" ๋ฒํผ์ด ์๋๋ผ "์คํฌ๋ฆฝํธ ์ถ๊ฐ" ๋ฒํผ์ ๋๋ค.
"์คํฌ๋ฆฝํธ ์ ๊ฑฐ" ๋ฒํผ์ ํด๋ฆญํ๊ณ ํ ์คํธ๋ฅผ ์ด๋ฆ์ผ๋ก ๋ฏธ๋ฆฌ ์ฑ์๋๋ค.
์ ํ์(ํ์ง๋ง ์คํฌ๋ฆฝํธ ๊ฒฝ๋ก๋ก ๋ฏธ๋ฆฌ ์ฑ์์ผ ํ ์๋ ์์ต๋๋ค.
์ฌ์ฉ์๊ฐ GDScript/VisualScript์์ ์คํฌ๋ฆฝํธ ์ ํ์ ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ
๋ฑ.). ๋ค๋ฅธ ์คํฌ๋ฆฝํธ๊ฐ ํ ๋น๋๋ฉด ํฌ๋ช ์์ด์ฝ
๋ค์ ๋ถํฌ๋ช ํด์ง๋๋ค. ๋ ๊ฒฝ์ฐ ๋ชจ๋ ์คํฌ๋ฆฝํธ ์์ด์ฝ์ ํด๋ฆญํ๋ฉด
ํ์ฑ ์คํฌ๋ฆฝํธ ์์ค ์ฝ๋๋ก ์ด๋ํฉ๋๋ค(๋ฐฑ์ ์คํฌ๋ฆฝํธ ์์ค ์ฝ๋๊ฐ
๋ค๋ฅธ ์คํฌ๋ฆฝํธ๋ ์์ต๋๋ค).โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/godotengine/godot/issues/6067#issuecomment-363904934 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AF-Z26oeOMT4HpjzDsX8eygMSeUhbTgVks5tSgurgaJpZM4JejbZ
.
๋์ ์์ค์ ์ฌ์ฉ ์ฌ๋ก๋ ํ๋ฌ๊ทธ์ธ(EditorPlugins, PluginScript/SubModule ์์คํ )์ด '์๋ฒฝํ' ์ฌ์ฉ์ ์ ์ ๋ ธ๋ ์ ํ์ ์ ์ํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค. ํ์ฌ ์ฌ์ฉ์ ์ ์ ์ ํ ์์คํ ์ "๋ ธ๋์ ์คํฌ๋ฆฝํธ"๋ฅผ ์ํ ์์ ๊ณต์ฅ์ผ๋ก, ์๋ก์ด ๋ ธ๋ ์ ํ์ ๊ตฌ์ถํ๋ ค๋ ๊ฒฝ์ฐ ์๋ง์ ์ํฌํ๋ก ๋ฐ ์ฌ์ฉ์ฑ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๊ฒ์ ํ๋ ์ด ์ฝ๋๋ก ์ฌ์ฉ์ ์ ์ ๋ ธ๋๋ฅผ ํ์ฅํฉ๋๋ค(๋ด์ฅ ๋ ธ๋์ ๋ฐ๋). ๋ ์๊ธํ ๋ฌธ์ ๋ ๋ค๋ฅธ ์ฌ์ฉ์ ์ง์ ๋ ธ๋์์ ์์๋๋ ์ฌ์ฉ์ ์ง์ ๋ ธ๋๋ฅผ ์์ฑํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
์ผ๋ถ ํน์ ์ฌ์ฉ ์ฌ๋ก๋ ์ ์์ค ๋ ธ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋๋ค. ํ๊ดด ๊ฐ๋ฅํ ์งํ์ ๋ํ ํ์ง ํ๋ธ ๊ธฐ๋ฐ ๋ณต์ GridMap ๊ตฌํ, ala Minecraft ๋๋ ํ์ง ํ๋ธ/์ด์ค ์ค๊ณฝ์ ์ฌ์ฉํ๋ ๊ธฐํ ์งํ ์์คํ ; ์ฌ์ฉ์ ์ ์ ์ปจํธ๋กค ์ ํ(๋ง์ ํ๋ ๊ฒ์์์ ๊ตฌํ๋๋ ์ํ ๋ฉ๋ด ์ปจํ ์ด๋, ์์ง ์ฌ์ ๋ฐ์ ์์ ๋งํผ ์ถฉ๋ถํ ๋์ ๋ชจ๋ ์ ํ์ ์ ์์ค ์ปจํธ๋กค); ์ ๋ ธ๋๋ฅผ ๋ฑ๋กํ๋ ํ๋ฌ๊ทธ์ธ์ ๋น๋ํ๋ ค๋ ๋ชจ๋ ์ฅ์. ์ด๋ฌํ ๊ฐ๊ฐ์ ๊ฒฝ์ฐ ์ผ๋ฐ์ ์ผ๋ก ๊ฒ์ํ๋ ์ด ์ฝ๋๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ์ ์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ๊ณ "๊ตฌํ" ์ฝ๋(GDScript/GDNative๋ก ์์ฑ)์ ๋ถ๋ฆฌ๋๋๋ก ํฉ๋๋ค.
์ฌ๊ธฐ์ ์ ๋ฌํ์ง ๋ชปํ ๊ฒ์ ์์ง ๋ชจ๋์ ์์ฑํ๊ณ ์ด์ ๋ํด ์ปดํ์ผํ ํ์ ์์ด ์ปค์คํ ๋ ธ๋๊ฐ ์์ง ๋ ธ๋์ฒ๋ผ ์๋ํ๋๋ก ํ๋ ๊ฒ์ด ๋ชฉํ๋ผ๋ ๊ฒ์ ๋๋ค.
์ด๋ฌํ ๊ฐ์ ์ ํน์ ๊ธฐ๋ฅ(๋ง์ ๊ฒ์ด ์์์๋ ๋ถ๊ตฌํ๊ณ )์ ์ํด ๋ฐ๋์ ๊ตฌ๋๋๋ ๊ฒ์ด ์๋๋ผ "ํ์ฌ ๋ฐฉ์์ ํ์งํ๊ณ , ์ด์คํ๊ณ , ์ง๋ฃจํ๋ค"๋ ๊ทผ๊ฑฐ์ ์ํด ์ด๋ฃจ์ด์ง๋๋ค. ์์ ํ ๊ตฌํ๋๋ค๋ฉด ์ด ์์คํ ์ ์์ง์ ์ฌ์ปดํ์ผํ ํ์ ์์ด GDScript / GDNative์์ ์์ง์ ๋ด์ฅ ์ ํ์ ํ์ฅํ๋ ๋งค์ฐ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ ํ์ฉํฉ๋๋ค. ๋์์ธ ๊ด์ ์์ ์ด๊ฒ์ ๋ง ๊ทธ๋๋ก ํ์ฌ ์์คํ ์ ๋ํ ์ง์ ์ ์ธ ๊ฐ์ ์ ๋๋ค.
๊ทธ ๋ชจ๋ ํ์ ํน์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ํ๋ค๋ฉด: ์ ์ฒด ํ๋ฌ๊ทธ์ธ / AssetLibrary ์ํ๊ณ .
์ด๊ฒ์ด ์ด ๋ณ๊ฒฝ์ผ๋ก ์ธํ ์ด์ ์ ๋ฒ์์
๋๋ค.
์, ๋ค์์ ๋ช ์์ ์ธ ์์ ๋๋ค.
๋ค์ํ ์๋ก์ด ์ ํ์ ๋
ธ๋๋ฅผ ์๊ฐํ๋ godot-skills
ํ๋ฌ๊ทธ์ธ์ด ์์ต๋๋ค.
ํจ๊ณผ: Functor ์์
Targeter: ๋น์ทํ์ง๋ง ๋ค๋ฅธ ๋
ธ๋๋ฅผ ์ฐพ๊ณ ์์งํฉ๋๋ค.
์คํฌ: Targeter์ Effects์ ๊ณ์ธต์ ๊ฒฐํฉํ์ฌ ๋
ธ๋๋ฅผ ์ฐพ๊ณ ๋ชจ๋์ ํจ๊ณผ๋ฅผ ์ ์ฉํฉ๋๋ค.
SkillUser: ์ฌ๋ฌ ๊ธฐ์ ์ "์์ "
๋๋ ์ด๋ฌํ ๊ฐ ๋ ธ๋๊ฐ ์ฌ์ฉ์๊ฐ ์ง์ ์ฅ๋ฉด์ ์์ฑํ๊ณ ์ถ๊ฐํ ์ ์๋ ๊ฒ์ ์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ๋ ธ๋ ๊ฐ๊ฐ์ ๊ธฐ๋ณธ ์ ํ์ผ๋ก ์๋ํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ์ด ๋ง์ง ์์ผ๋ฉฐ, ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ด๋ จ๋ ๋ ธ๋์ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ฐฐ์นํด์ผ ํฉ๋๋ค. ์ด์ ๊ฐ์ ์ฌ์ฉ ์ฌ๋ก์ ๊ฒฝ์ฐ ์ฌ์ฉ์๊ฐ ํน์ ์คํฌ๋ฆฝํ ๋ ๊ธฐ๋ฅ ์งํฉ์ ์ ๊ฑฐํ ์ ์๋๋ก ํ๋ ค๋ ๋ ธ๋๋ฅผ ๋ง๋๋ ๊ฒ์ด ์ ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๊ฐ ์ฅ๋ฉด์ ์ถ๊ฐํ๋ ๋ชจ๋ Targeter ๋ ธ๋์ ๋น Targeter ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ฐฐ์นํ์ง ๋ชปํ๋๋ก ํ๊ณ ์ถ์ต๋๋ค. ์ด๋ ์คํฌ์ด Targeter๋ฅผ ์์์ผ๋ก ๊ฐ์ง ๋ ์ป์ ์ ์๋ ์ฆ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค(Area2D ๋ฐ CollisionShape2D ๋ ธ๋์ ์ ์ฌ).
ํ์ฌ ์ํฌํ๋ก์์๋ ์ฌ์ฉ์๊ฐ...
์ด ์์คํ ์ ์ฌ์ฉํ๋ฉด ์ด ๋ชจ๋ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊ฟ ์ ์์ต๋๋ค.
์ฌ์ฉ์๋ ์์ง ๋ด ์ ํ์ ํ์์ํค๋ ๊ณ ์ ํ ์ฌ์ฉ์ ์ ์ ์ ํ์ ๋์ ์ผ๋ก ์ถ๊ฐํ ์ ์์ต๋๋ค(๋จ์ํ ์ฌ์ฉ์ฑ์ ์ํด). ๋ํ ๋ฌธ์ ์ ๋ ธ๋์ ์คํฌ๋ฆฝํธ ๊ธฐ๋ฅ์ด ์กด์ฌํ๋๋ก ํ์ฌ ํ๋ฌ๊ทธ์ธ ๊ธฐ๋ฅ์ ๋ณด์์ ๊ฐํํฉ๋๋ค. ํ์ฌ ์ฌ์ฉ์๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ๊ฒ ์ ๊ฑฐํ๊ณ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค(๋ฐ๋์งํ์ง ์์). ๋ํ ๋๊ตฐ๊ฐ๊ฐ ๋ ธ๋์์ ์คํฌ๋ฆฝํธ๋ฅผ "์ง์ฐ๊ธฐ"๋ฅผ ์ํ๋ฉด ํด๋น ๋ ธ๋๋ ์ฌ์ฉ์ ์ง์ ์ ํ ๊ธฐ๋ฅ์ ์์ง ์์์ผ ํฉ๋๋ค(์ด๊ฒ์ ํฐ ๊ธฐ๋ฅ์ ๋๋ค). ์ฌ์ฉ์ ์ ์ ์ ํ ์คํฌ๋ฆฝํธ๋ฅผ ๊ฐ๋ ๊ฒ์ผ๋ก ๋๋์๊ฐ์ผ ํฉ๋๋ค.
์ข์, ๊ทธ๋์ ์ ๋ฐ์ดํธ. ๋๋ ํ์ฌ ๋ค์์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
ClassDB
๋ ์ด์ ์ฌ์ฉ์ ์ ์ ์ ํ์ ์ง์ ์ถ๊ฐ ๋ฐ ์ ๊ฑฐํ ์ ์์ต๋๋ค.EditorPlugin
์๋ ์ฌ์ฉ์ ์ ์ ์ ํ๋ฟ๋ง ์๋๋ผ ์์ด์ฝ๊ณผ ๊ฐ์ ๊ธฐํ ํธ์ง๊ธฐ ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ ๋ฐ ์ ๊ฑฐํ๋ ์ ์ฌํ ์ฌ์ฉ์ ์ ์ ์ ํ ๋ฉ์๋๊ฐ ์์ต๋๋ค. ์ด ๋ฉ์๋๋ EditorPlugin
๊ฐ ํ์ฑ/๋นํ์ฑ์ผ๋ก ์ ํ๋ ๋๋ง๋ค ๋ฐฉ์ถ๋๋ ์ ์ ํธ์ ์ฐ๊ฒฐ๋ฉ๋๋ค.set_custom_script(RefPtr());
๋ก ์ฌ์ฉ์ ์ ์ ์ ํ ์คํฌ๋ฆฝํธ ๊ฐ์ ์ง์์ผ ํฉ๋๋ค.project.godot
ํ์ผ์ ์คํ๋ ๊ฒ์์ด ๋๋จธ์ง ๊ฒ์์ด ์์๋๊ธฐ ์ ์ main.cpp
์ ์ค์ ํ ์ ์๋๋ก ๋ชจ๋ ์ฌ์ฉ์ ์ ์ ์ ํ์ผ๋ก ์ฑ์์ง๋๋ค.๋จ์ ๊ณผ์ ์๋ฃ...
script_create_dialog.cpp
์์ ์ฌ์ฉ์๊ฐ Inherits ํ๋๋ฅผ ํธ์งํ ์ ์๋๋ก ํ๋ ๋ณ๋์ ๋ฒ๊ทธ๋ฅผ ๋ชจ๋ ์์ ํฉ๋๋ค.* ์ค์ ๋ก ์ด๊ฒ์ ๋ํด ๋ช ๊ฐ์ง ์ง๋ฌธ์ด ์์ต๋๋ค.
๋จผ์ GDScriptLanguage ํด๋์ค์์ ์ ์ญ์ ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ ์์ด gdscript_compiler.cpp
ํ์ผ์์ add_global_constant
/ _add_global
๋ด
๋๋ค. ์ฑ๊ธํค์ด ์ถ๊ฐ๋๊ฑฐ๋ ์ ๊ฑฐ๋ ๋๋ง๋ค ์์ ํ ๋ค์ ์ด๊ธฐํ๋ฉ๋๊น? ์ ์ญ ์๋ณ์๋ ์ด๋ป๊ฒ ๋์ ์ผ๋ก ํธ์ง๋ฉ๋๊น? ์ด๋ ์ฌ์ฉ์๊ฐ ์คํฌ๋ฆฝํธ๋ฅผ ๋ณ์์ ๋จผ์ ๋ก๋ํ์ง ์๊ณ ๋ MyNode.static_func()
๋ฅผ ์ํํ ์ ์๋๋ก ํ๊ธฐ ์ํ ๊ฒ์
๋๋ค.
๋ด๊ฐ ๊ทธ๊ฒ์ ์๋ ๋์, Godot์ GDScript๋ ํนํ ์ด ๋ณ๊ฒฝ์ ์ผ๋ถ๋ก ๋ค์์คํ์ด์ค ๋์
์ผ๋ก ํฐ ์ด์ ์ ์ป์ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ํ๋๊ทธ๋ฅผ ์ง์ ํ๋ ค๋ฉด ์ฌ๋ฐ๋ฅธ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ์ฐพ์์ผ ํ์ง๋ง ๊ณ ์ ํ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ค ๋ ์์ง ๋ฐ ํ๋ฌ๊ทธ์ธ ์ ํ์ ์ด๋ฆ ์ถฉ๋์ ๋ํ ์ฐ๋ ค๋ฅผ ์์จ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด \
๊ฐ ์ ํ ๊ตฌ๋ถ ๊ธฐํธ๋ผ๊ณ ๊ฐ์ ํ๋ฉด...
extends Node # an in-engine type.
extends \ # triggers an error if left alone, but would prompt a dropdown of the plugin API names for auto-completion as well as the names of any scripts in the current project that are not part of a plugin.
extends \MyPlugin\ # triggers an error if left alone, but would prompt a dropdown of the scripted types that exist for the plugin
extends \MyNode # extends my_node.gd somewhere in res://
extends \MyPlugin\MyNode # extends my_node.gd somewhere in res://addons/[my_plugin_something?]/
func _ready():
print(\MyNode.CONSTANT) # would print CONSTANT in the current project's my_node.gd script
์ด์จ๋ ์ด ๋ชจ๋ ^๋ ํ์ฌ ์ฃผ๋ณ์์ ๋์ง๊ณ ์๋ ์์ด๋์ด์ผ ๋ฟ์
๋๋ค. ๋ค์์คํ์ด์ค๊ฐ ๋์
๋ ๊ฒฝ์ฐ EditorNode
์ resource_saved
์ ํธ๋ฅผ ์ฌ์ฉํ์ฌ ์คํฌ๋ฆฝํธ๊ฐ ํ์ผ ์ด๋ฆ์ ๊ธฐ๋ฐ์ผ๋ก ์ด๋ฆ๊ณผ ์๋์ผ๋ก ์ฐ๊ฒฐ๋๋๋ก ํ ์๋ ์์ต๋๋ค. ๊ทธ๊ฒ๋ค์ ๋ฐ๋์ ์ฌ์ฉ์ ์ ์ ์ ํ์ผ ํ์๋ ์์ง๋ง(๊ฐ์ฒด์์ ์คํฌ๋ฆฝํธ๋ฅผ ์ ๊ฑฐํ ์ ์๋ค๋ ์๋ฏธ์์) ๋งค์ฐ ์ ์ฉํ๊ณ ์ง๊ด์ ์ธ ์ด๋ฆ๋ง์ผ๋ก ์ก์ธ์คํ ์ ์์ต๋๋ค. ์คํฌ๋ฆฝํธ๋ ๋งจ ์์ ๋ค์์คํ์ด์ค ์ ๋ชฉ์ ์ ๊ณตํ์ฌ ๊ธฐ๋ณธ ์๋ ์ด๋ฆ ์ง์ ( filename.capitalize().replace(" ", "")
?)์ ์ฌ์ ์ํ ์๋ ์์ต๋๋ค(์: \MyPlugin\mynode
). ์ด์ ๊ฐ์๊ธฐ "\MyPlugin\mynode"๋ ํด๋น ์คํฌ๋ฆฝํธ์ ์ ์ญ ์๋ณ์์
๋๋ค.
์ฌ๊ธฐ๊น์ง์ ์งํ ์ํฉ์ ์ค๋ํซ ์ด ์์ต๋๋ค.
@willnationsdev \
๋ฅผ ์ ํํ์ง ๋ง์ญ์์ค. ์ด๋ฏธ ์ด์ค์ผ์ดํ ๋ฐ ์ฌ๋ฌ ์ค์ ์ฌ์ฉ๋์์ต๋๋ค. .
, :
๋๋ ::
๊ฐ ๋ ์ข์ ๋ณด์
๋๋ค.
@Zylann ํ๋ก์ ํธ์ ์ถ๊ฐ๋๋ ๋ชจ๋ ๋
ธ๋์ ์ ๋์ฌ๋ก ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ ๊ณํ์ด์์ต๋๋ค. ๋ฐ๋ผ์ ์๋ฅผ ๋ค์ด res://container.gd
์ ์๋ ์คํฌ๋ฆฝํธ๋ ์ค์ Container
ํด๋์ค์ ์ถฉ๋ํ๋ ๊ฒ์ ์ํ์ง ์์ต๋๋ค. ๋ง์นจํ(.)๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋ณด์ผ ์ ์์ต๋๋ค.
var engine_type = Container.new()
var script_type = .Container.new()
var plugin_script_type = .MyPlugin.Container.new()
๊ทธ๋ฐ ํ์์ ๋ํด ๋ฐ๋ํ๋ ์ฌ๋์ด ์์ต๋๊น?
ํธ์งํ๋ค:
ํ์ ํด๋์ค ํจ์ ๋ด์์ ๋ถ๋ชจ์ ๋ฉ์๋๋ฅผ ํธ์ถํ์ง๋ง ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
func _virtual_method():
._virtual_method() # parent stuff
# my stuff
ํ ... ์์ ๋ฐ / ๋๋ ๋ณ์์ ๋ฌธ์ ๊ฐ ์์ต๋๊น? ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ๊ดํธ๋ ์ํผ ํจ์์ด๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ฐ๋ฅํ ๋ค์์คํ์ด์ค ์๋ณ์์์ ์๋ฏธํ๋ค๊ณ ๊ฐ์ ํ ์ ์์ต๋๋ค.
์์งํ ๋งํด์ ์ง๊ธ์ ๋ค์์คํ์ด์ค๋ฅผ ๋ณด๋ฅํ๊ณ ์ถ์ต๋๋ค. ๋์ค์ ๋์ ๋ ์ ์์ผ๋ฉฐ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ํ์ฌ ์์คํ ์ ๋์ ํ๊ณ ์ถ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ํ ์๋ ์ด๋ฆ ๋ฑ๋ก์ ์ํด _์ ๋ง_ ์ ์๊ฐํ ์์คํ ์ด ํ์ํ๋ฉฐ, ์๋ง๋ ์ ์ฒด ์ ๋์จ ์กฐ์ง ๊ตฌ์กฐ์ ์ฌ์์ ์ผ๋ก ํ์ฅ๋ ์ ์์ต๋๋ค. ์ด๋ ์๋นํ ์์ ์์ ์ด๋ฉฐ ์ด ๋ฌธ์ ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ฉ๋๋ค.
๊ฐ์ธ์ ์ผ๋ก '์๋ ๋ฑ๋ก' ์คํฌ๋ฆฝํธ์ ์ด๋ฆ์ ํ์ผ์ ์ ์ธ์ผ๋ก ์ ์ดํ๋ โโ๊ฒ์ด ์ข์ต๋๋ค.
register <NAME> extends <PARENT>
๋๋ GDScript์ ์ด๋ฏธ ์กด์ฌํ๋ ํ์ฌ extend <NAME>
ํ๋กค๋ก๊ทธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์ ์ฌํ ๊ตฌ๋ฌธ์
๋๋ค.
ํธ์ง: ๋ํ ๋ถ๋ชจ(์: Spatial)์์ ํ์๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉ์ ์ง์ ์์(์: Sprite3D->CustomType)์ ํ ๋นํ๋ ๋ฐฉ๋ฒ์ ๋ฌป๊ณ ์ถ์์ต๋๋ค. ์ด๊ฒ์ ์ด๋ฏธ ์์ง ์ ํ์ ๋ํด ์๋ํ๋ฉฐ ์ฌ์ฉ์ ์ ์ ์ ํ ์์ฒด์์ ํ์๋๋๋ก ํ ๋น๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ ํํ๋ ๊ฒ์ ์ ์๋ํ์ง ์์ ๊ฒ์ ๋๋ค.
@Web-eWorks ์ถฉ๋ถํ ๊ณต์ ํฉ๋๋ค. ํ์ฌ API๋ฅผ ์์ฑํ๊ธฐ ์ํด ์์ ํ ๋ค์ PR์ด ์ ์ถ๋๋ฉด ๋ค์์คํ์ด์ค์ ๋ํ ์ ๋ฌธ์ ๋ฅผ ์ด๊ฒ ์ต๋๋ค.
@Web-eWorks๊ฐ ์๋ฏธํ๋ ๋ฐ๋ฅผ ์ ์ดํดํ๋๋ผ๋ ์ฌ์ ํ ์ด ์ง๋ฌธ์ด ์์ต๋๋ค. Object
์ ๋จ์ผ ์คํฌ๋ฆฝํธ๋ง ์์ ์ ์๋ค๋ ์ฌ์ค์ ์ด๋ป๊ฒ ํด๊ฒฐํ ์ ์์ต๋๊น? ์ด๋ป๊ฒ ... "์คํฌ๋ฆฝํธ ๊ฐ๋ฅ"ํฉ๋๊น? ๊ทธ์ ๋ณ๊ฐ๋ก ClassDB์ ๋ฑ๋กํ๋ ๊ฒ์ ํ๋ก๊ทธ๋๋จธ์ ๋์์ด๋์ ์ฌ์ฉ ์ธก๋ฉด์์ ๊ธ๋ก๋ฒ ์๋ณ์์ ๋ถ๊ณผํ๊ธฐ ๋๋ฌธ์
๋๋ค.
@Zylann ๋ด ํฌํฌ์์ ์ํํ ์์
์ Object
custom_script
์์ฑ์ ๋ง๋๋ ๊ฒ์
๋๋ค. ๊ฐ์ด ํ ๋น๋ ๊ฒฝ์ฐ์๋ง ์ค์ํ์ง๋ง ์คํฌ๋ฆฝํธ ๊ฐ ํ ๋น๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ script
์์ฑ์ ๋ํ ๋ฐฑ์
์คํฌ๋ฆฝํธ/์ ์ฝ ์กฐ๊ฑด ์ญํ ์ ํฉ๋๋ค. script
custom_script
์ค์ ๋๊ณ Script
๋ฅผ script
์ ์๋ก ํ ๋นํ๋ฉด Script
์ธ์คํด์ค๋ custom_script
์์ ํ์๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๋ชจ๋ ๊ฒ์ ๋ฐฐํ์์ Object
์ ์ํด ๊ด๋ฆฌ๋๋ฏ๋ก ์์ง์ ๊ดํ ํ Object
์๋ ์ฌ์ ํ 1๊ฐ์ ์ค์ ์คํฌ๋ฆฝํธ๋ง ์์ต๋๋ค.
ClassDB ์ฝํ
์ธ ์๋ ๋ฑ๋ก๋ ์ฌ์ฉ์ ์ง์ ์ ํ์ ๋ณด์กฐ ๋งต์ด ์์ผ๋ฉฐ ์คํฌ๋ฆฝํธ ์์ฒด ๋ฐ ๊ธฐํ ์ ๋ณด๋ฅผ ํ ๋นํ ์ด๋ฆ์ ๋งคํํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ด๋ จ ์์ ๋ฐฉ๋ฒ( get_class_list
, is_parent_class
, get_parent
๋ฑ)๊ณผ ํจ๊ป ํด๋น ์ด๋ฆ๊ณผ ์์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ์ผ๋ถ ๋ฐฉ๋ฒ์ ๋ํ ์ตํธ์ธ ํ๋๊ทธ๋ก ์ํ๋ฉ๋๋ค. get_class_list
๋ ์ด์ true
๋ฅผ ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌํ๋ ๊ฒฝ์ฐ ์ฌ์ฉ์ ์ ์ ์ ํ๋ง ํฌํจํ๋ bool ํ๋๊ทธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๊ฒ์ด ์์ง์ ๋๋จธ์ง ๋ถ๋ถ๊ณผ์ ํธํ์ฑ์ด ๊นจ์ง๋ ๊ฒ์ ๋ฐฉ์งํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
@willnationsdev ๊ทธ๋์ ์คํฌ๋ฆฝํธ๊ฐ ๋ด์ฅ ํด๋์ค์ฒ๋ผ ์๋ํ๋๋ก ํ๋ ์์คํ ์์ ์ฌ์ฉ์๊ฐ ๋ชจ๋ ์คํฌ๋ฆฝํธ์ ์ ๋์จ์ด ๋ด์ฅ ํด๋์ค์ ๊ฐ์ ์ผ๋ฅ ์๋ฏผ์ผ๋ก ๊ฐ์ฃผ๋๊ณ "๊ตฌ์" ๋ฐฉ์์ ๋ฒ๋ฆฌ๊ธฐ๋ฅผ ์ํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
์. ํ์ฌ ์คํฌ๋ฆฝํธ๊ฐ ์๋ํ๋ ๋ฐฉ์์ extends Node
VBoxContainer
์ ๋ฃ์ ์ ์๊ณ ์ฌ์ ํ ์ ์๋ํ๋ค๋ ๊ฒ์
๋๋ค. ํ์ฌ ๊ตฌํ์ด ์ฌ์ฉ์ ์ ์ ์ ํ์ ๋ํ ๋์์ ์ค๋จํ๋ฉด ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์์ง ์ ํ์์ ์ง์ ํ์๋ '์ผ๋ฐ' ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ฉด์ ์ฌ์ฉ์ ์ ์ ์คํฌ๋ฆฝํธ์ ๋์์ ์ ์งํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
@Zylann ์ด๊ฒ์ด ๋ฐ๋ก ๋ด๊ฐ ๋ค์์คํ์ด์ค๋ฅผ ๋์ ํ์ฌ ์์ง ๋ด ์ ํ๊ณผ ์ถฉ๋ํ์ง ์๊ณ ์ด๋ฆ์ ํตํด ์คํฌ๋ฆฝํธ์ ํ๋ฌ๊ทธ์ธ์ ์คํฌ๋ฆฝํธ๋ฅผ ์์ ํ๊ฒ ํตํฉํ ์ ์๋ ์ด์ ์ ๋๋ค. ์ฌ๋๋ค์ด ์๋ก์ด ๋ฐฉ๋ฒ๋ง ์ฌ์ฉํ๊ณ ์ ๋ฐฉ๋ฒ์ ๋ฌด์ํ๋ ๊ฒ์ ๋ง๋ ๊ฒ์ ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ ์ค์ ๋ก ๊ทธ๊ฒ์ด ์ ๋ฐ์ ์ผ๋ก ๋ ๋์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋งค๋ฒ ๋ช ์์ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๊ฒ์ ํ๋ ์ผ์ ๋๋ค.
@Web-eWorks ์ฌ๊ธฐ์์ ํ๋ก์ฐํ๊ณ ์๋์ง ํ์คํ์ง ์์ง๋ง...
์ปค์คํ
์ ํ์ ํนํ ์์์ ์ํด ์์ง ๋ด ์ ํ์ฒ๋ผ ์๋ํฉ๋๋ค. ๋ฐ๋ผ์ ์ฌ์ฉ์ ์ง์ ์ ํ์์ ํ์ฅํ๋ ๊ฒฝ์ฐ ์์ง ๋ด ๊ณ์ธต ๊ตฌ์กฐ์ ์์ ํ ๋ค๋ฅธ ๋ถ๊ธฐ์์ ํ์ฅํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ์ . Node
ํ์ฅํ๋ ์ฌ์ฉ์ ์ ์ ์ ํ MyNode
์ ์์ฑํ๋ฉด Node2D
๋ฅผ ๋ฃ์ ์ ์๋ ๊ฒ์ฒ๋ผ ํด๋น ์คํฌ๋ฆฝํธ๋ฅผ VBoxContainer
์ ๋ฃ์ ์ ์์ต๋๋ค. Node2D
"์ผ๊ธฐ" a VBoxContainer
. ์ด๊ฒ์ ์ค์ ๋ก ์๋๋ ๋์์
๋๋ค.
์ด์ ๋ค์์คํ์ด์ค ๊ฐ๋
์ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์ ์ ์ ์ ํ์ด ์๋ ๋ช
๋ช
๋ ์คํฌ๋ฆฝํธ๋ฅผ ๊ฐ๋ ๊ฒ์ด ์ด์์ ์
๋๋ค. ๋ฐ๋ผ์ ์ด ๊ฒฝ์ฐ Node
๋ฅผ ํ์ฅํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ค๊ณ Node
, VBoxContainer
AND MyNode
์ ๋ฃ์ ์ ์์ต๋๋ค. ๋ง์ด ๋ผ?
๊ทธ๋์ ๋ด๊ฐ ๋งํ๋ ค๋ ๊ฒ์ MeshInstance
$๋ฅผ ์์ํ๋ ์ฌ์ฉ์ ์ ์ ์ ํ MyNode
์ ๋ง๋ค๊ณ ํธ์ง๊ธฐ์์ ํด๋น ๋
ธ๋์ ์ธ์คํด์ค๋ฅผ ๋ง๋ค๊ณ Spatial
๋ฅผ ์์ํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ๋ ค๊ณ ์๋ํ๋ ๊ฒฝ์ฐ์
๋๋ค. MyNode
์ ํ์ ๋
ธ๋์ ์ฐ๊ฒฐํ๋ฉด ์ ๋๋ก ์๋ํฉ๋๊น? ๊ทธ๊ฒ์ '์์ง' ๋
ธ๋์์ ์ ๋๋ก ์๋ํ๋ฉฐ, ์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ์๋ฎฌ๋ ์ดํธํด์ผ ํ๋ ๋์์
๋๋ค.
์ด๋ '์ฌ์ฉ์ ์์ค' ์คํฌ๋ฆฝํธ์ ์์ ๊ณ์ธต ๊ตฌ์กฐ์ ๊ด๊ณ์์ด ์ฌ์ฉ์ ์ง์ ์ ํ์ ์คํฌ๋ฆฝํธ๊ฐ ํธ์ถ๋๋์ง ํ์ธํ๋ ๋ฌธ์ ์ด๊ธฐ ๋๋ฌธ์ ๋ค์์คํ์ด์ค์ ๋ ๋ฆฝ์ ์ด์ด์ผ ํฉ๋๋ค.
@Web-eWorks ์, ์๋ํฉ๋๋ค. ClassDB
์ custom_types
๋งต์ ์๋ ๋ชจ๋ "์ฒซ ๋ฒ์งธ ์์ค" ํญ๋ชฉ์ $#$ classes
#$ ๋งต์ ์ ํ์ ๋ค์ ๋งํฌ๋์ด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ณ ์ฌ์ฉ์ ์ ์ ์ ํ์ด ์์ฑ๋์ง ์์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฌ์ฉ์ ์ง์ ์ ํ์์ ์ต๋ Object
๊น์ง ์์ง ์ ํ์ผ๋ก ๋ค์ ์ด๋ํ ๋ ์์ ์ฒด์ธ์ด ์ ์ง๋ฉ๋๋ค.
@willnationsdev ํ์คํ ํ์๋ฉด MyNode
์ _ready
๋ฉ์๋๋ฅผ ์ถ๊ฐํ๊ณ Spatial์์ ํ์๋ ์ฌ์ฉ์ ์คํฌ๋ฆฝํธ์ ์ค๋น ๋
ธ๋๋ฅผ ์ถ๊ฐํ๋ฉด Spatial._ready(), MeshInstance._ready(), MyNode._ready(), script._ready()
์ ๊ฐ์ด ํธ์ถ๋ฉ๋๋ค. ? (๋๋ _ready
๊ฐ ๋ฐ์ก๋๋ ์ฃผ๋ฌธ์ ์๊ด์์ด.)
๋๋ ์ด๊ฒ์ด ๋ถํ์ํ๊ณ ํผ๋์ค๋ฝ๋ค๋ ๋ด ๊ฒฌํด๋ฅผ ์ฌ์ ํ ๊ณ ์ํฉ๋๋ค. ์ด ๋ฌธ์ ๋ ์ฝ์ด ์์ง์ด ์๋ ์๋ํฐ UI์์ ํด๊ฒฐํด์ผ ํฉ๋๋ค.
@reduz ๊ทธ๋ ๋ค๊ณ Editor UI๋ง์ผ๋ก๋ ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ๊ฐ ์๋๋๋ค. ๊ฐ์ฒด์ ๋ํ ์ฌ์ฉ์์ ์คํฌ๋ฆฝํธ ์กฐ์์ ์ ์ดํ๋ ค๋ ๊ฒฝ์ฐ์๋ ๊ทธ๋ ์ง ์์ต๋๋ค. ๋ง์ ์ฌ๋๋ค์ด ์ค์ ํ๊ณ ์ถ์ดํ๋ ๊ธฐ๋ฅ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
gdscript_compiler๊ฐ ์คํฌ๋ฆฝํ ๋ ์ ํ์ ๋ํ ์๋ก์ด ์ ์ญ ์๋ณ์๋ฅผ ์ค์ ํ๊ธฐ ์ํด ClassDB์์ ๋ชจ๋ ์ถ์ ํ๊ณ ClassDB๊ฐ ์์ง์ ๋ชจ๋ ์์ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋๋ก ํ์ฉํ๋ ๋์ EditorData์ ์ฝํ ์ธ ๋ฅผ ์ฐธ์กฐํด์ผ ํ๋ค๊ณ ์ ์ํ๊ณ ์์ต๋๊น?
๋ฌผ๋ก ์๋ํฐ UI์ ๊ด์ ์์ ํ์ด์ผ ํ ๋ถ๋ถ๋ ์์ง๋ง, ํต์ฌ์ ์ผ๋ก ํ์ด์ผ ํ ๋ถ๋ถ๋ ์๋ค. ClassDB์ ๊ด์ ์์ ์์ง์ ์ฌ์ฉ์ ์ ์ ์ ํ์ ์ถ๊ฐํ๋ _actual_ ์ ํ์ ๋งค์ฐ ๊ฐ๋ ฅํ๊ณ ๊ถ๊ทน์ ์ผ๋ก ํ์ํ ๊ธฐ๋ฅ์ ๋๋ค. ํผ๋์ค๋ฌ์ด ํ, ๋๋ ๊ทธ๊ฒ์ด ํ์ฌ ์์คํ ๋ณด๋ค ๋ ํผ๋์ค๋ฝ์ง ์๊ณ ์๋ง๋ ๋ํ ๊ฒ์ด๋ผ๊ณ ์ฌ์ ํ ์ฃผ์ฅํฉ๋๋ค.
@Web-eWorks ๋์ํฉ๋๋ค. ์์ ๋ฐ์ดํฐ๋ฅผ ํธ์ง๊ธฐ์์ ์ถ์ ํ๋๋ก ํ๋ ๊ฒ์ ์ค์ ๋ก ๋ด ์๊ฐ์ ํจ์ฌ ๋ ํผ๋์ค๋ฌ์ธ ๊ฒ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ํธ์ง๊ธฐ ์์ด ๊ฒ์์ ์คํํ๋ฉด ํด๋น ์ ํ ์ ๋ณด๊ฐ ๋ ์ด์ ์กด์ฌํ์ง ์๊ธฐ ๋๋ฌธ์ ์ด์ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ๋ฉ๋๋ค project.godot
ClassDB
์์ ์ ์ฌ์ฉ์ ์ ์ ์ ํ์ ์ถ๊ฐํ๊ธฐ ์ํ EditorPlugins
์์์ผ๋ก ์ธํด ์ฅ๋ฉด์ ์คํํ ๋ GDScript๊ฐ ์ปดํ์ผ์ ์คํจํ์ต๋๋ค).
@Web-eWorks ๊ทธ๋ฆฌ๊ณ ์ด์ ์ง๋ฌธ์ ๋๋ตํ๊ธฐ ์ํด ์, ์ ๋๋ก ์๋ํฉ๋๋ค.
๋ด ํ
์คํธ ์๋๋ฆฌ์ค์๋ $ GDSkillsEffect
> GDSkillsAPI
> Node
๋ฅผ ํ์ฅํ๋ Node.gd
๊ฐ ์๊ณ ๊ฐ ์คํฌ๋ฆฝํธ์ ๊ตฌํ๋ _ready ๋ฉ์๋๋ ์ ์ ํ ์ฃผ๋ฌธ: API, ํจ๊ณผ, Node.gd.
๋ ๊ฐ์ ์คํฌ๋ฆฝํธ๊ฐ ๋ชจ๋ ์ด๋ฆ์ผ๋ก ์ฌ์ฉ์ ์ ์ ์ ํ ์คํฌ๋ฆฝํธ์์ ์์์ ์๋ํ ๋๋ง๋ค ํ์ฌ ์ผ์ข
์ ๋ฌดํ ๋ฃจํ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ณ ์์ต๋๋ค. ์ . Node.gd ์ extends GDSkillsEffect
๊ฐ ์๊ณ gdskills_effect.gd
์ extends GDSkillsAPI
๊ฐ ์์ผ๋ฉด gdskills_effect.gd
๋๋ gdskills_api.gd
๋ฅผ ์์ ํ๊ณ ์ ์ฅํ๋ ค๊ณ ํ๋ฉด ํธ์ง๊ธฐ๊ฐ ๋ฌดํํ "๋ก๋"ํ ๋ค์ ์ถฉ๋ํฉ๋๋ค. ๊ทธ๊ฒ์ด ์๋ง๋ ํ์ฌ ๋์ ๊ฐ์ฅ ํฐ ๋ฒ๊ทธ์ผ ๊ฒ์ด๋ค.
@willnationsdev ์, ์๋์, Node.gd
ํ์ฅ Node
, _not_ GDSkillsEffect
์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค. _that_์ด ์๋ํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์๋ฅผ ๋ค์ด ๋ค์์ ์ฅ๋ฉด ํธ๋ฆฌ์ ํํ์ ๋๋ค.
-> User Script:
extends Node
func _ready(): pass
@Web-eWorks ์, ๋ฌด์จ ๋ง์์ธ์ง ์๊ฒ ์ต๋๋ค. ๊ธ์, ๊ทธ๊ฒ์ ์๋ํด์ผํ์ง๋ง ๋ฐฉ๊ธ ํ
์คํธํ์ผ๋ฉฐ Object::set_script()
๋
ผ๋ฆฌ๊ฐ ์ด๋ค ์ด์ ๋ก ์ฐจ๋จํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ฏ๋ก ์์ ํด์ผ ํ ๋ฒ๊ทธ์
๋๋ค. XD Node
๊ฐ ์ฌ์ฉ์ ์ ์ ์ ํ ์คํฌ๋ฆฝํธ๋ฅผ ํ์์ํค์ง ์๋๋ค๋ ๊ฒ์ ๊ฐ์งํ๊ธฐ ๋๋ฌธ์ ์คํจํ๋ ๊ฒ์
๋๋ค.
@Web-eWorks ์ธ๊ธํ๋ฏ์ด ์ด๊ฒ์ ClassDB์์ ๋ณ๊ฒฝํ ํ์๊ฐ ์์ต๋๋ค.
๊ฐ ์คํฌ๋ฆฝํ ์ธ์ด๊ฐ ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ด ํต์ฌ์์ ํด๊ฒฐ๋ ํ์๊ฐ ์๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค. Mono์์ ์ ํด๋์ค๋ฅผ ์ฝ๊ฒ ๋ง๋ค ์ ์์ผ๋ฉฐ ์๋ํ ๊ฒ์ ๋๋ค. GDScript์ ๊ฒฝ์ฐ ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ฏธ๋ฆฌ ๋ก๋๋ ์ ์ญ์ผ๋ก ๋ ธ์ถํ๋ ๊ฐ๋จํ ๊ฒฝ์ฐ์ผ ์ ์์ต๋๋ค. PR์์ ์ ์ํ ๋ง๋ฅ ์๋ฃจ์ ์ ํ์คํ ๊ฐ ๊ธธ์ด ์๋๋๋ค.
@willnationsdev ๋๋ ๋น์ ์ ๋ ธ๋ ฅ์ ๊ฐ์ฌํ์ง๋ง ์ด๊ฒ์ ์ด๋ฏธ ๋์์ด ๋ ผ์๋์์ผ๋ฉฐ ํฉ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
@willnationsdev ์ฐธ๊ณ ๋ก ์์ง ๋์์ ์์ ๊ณ์ธต ๊ตฌ์กฐ์์ _something_์ ํ์ฅํ๊ฑฐ๋ ๊ทธ ์ด์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ๋
ธ๋์ ์ถ๊ฐํ ์ ์๋ค๋ ๊ฒ์
๋๋ค. ๋ฐ๋ผ์ extends Spatial
MeshInstance
์ ์ถ๊ฐํ ์ ์์ง๋ง Control
๋๋ Node
์๋ ์ถ๊ฐํ ์ ์์ต๋๋ค Spatial
. ์ด๊ฒ์ ๋ณต์ ํด์ผ ํ๋ ๋์์
๋๋ค. (๋ถ๋ด์์ด...)
@reduz ๊ทธ๋ฌ๋ Mono์์ ์ ํด๋์ค๋ฅผ ์์ฑํ๋ฉด ์์ง์ ์์ ๊ณ์ธต ๊ตฌ์กฐ์ ์ถ๊ฐ๋ฉ๋๊น? ๋๋ ํธ์ง๊ธฐ์ ๋ ธ๋ ์์ฑ ๋ํ ์์? ์๋ง๋ ์ด๊ฒ์ ๋ชฉ์ ์ด ๋ฌด์์ธ์ง ๊ฐ๊ฒฐํ๊ฒ ๊ธฐ์ ํ๋ ์๋ก์ด ๋ฌธ์ ๋ฅผ ์ด์ด์ผ ํ ํ์๊ฐ ์์ ๊ฒ์ ๋๋ค. ์๋ํ๋ฉด ์ ๋ ์ฐ๋ฆฌ๊ฐ ์ฌ๊ธฐ์ ๊ฐ์ ๊ฒ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ง ์๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
ClassDB ์์ ์ ์์ ์ ์์ง์ ๋ค์ ์ปดํ์ผํ ํ์ ์์ด ์๋ก์ด ์ ํ์ ๋ ธ๋(๋๋ ๋ฆฌ์์ค)๋ฅผ ๋ฑ๋กํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค. @willnationsdev ๊ฐ ๋์ผํ ๋ถ๊ธฐ์์ ์์ ํ๊ณ ์๋ ์ ์ ๋ฌธ์ ์ด์ง๋ง GDScript์ ์๋ก์ด ์ฌ์ฉ์ ์ ์ ์ ์ญ์ ์ถ๊ฐํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ด๊ฒ์ ์์ ์ ํดํน์ ์ถ๊ฐํ๋ ๊ฒ์ด ์๋๋ผ ์์ง ์ ํ์ ํ์ฅํ๊ธฐ ์ํด ์ ์ค๊ณ๋ _์์คํ _์ ๋ง๋๋ ๊ฒ์ ๋๋ค.
@Web-eWorks ์์ง ์์ ๊ณ์ธต์ ์คํฌ๋ฆฝํธ๊ฐ ์๋ C++์ฉ์ ๋๋ค. ๋ ๊ฐ์ง๋ฅผ ํผํฉํ๋ ค๋ ์๋๋ ์ฒ์๋ถํฐ ๊ฐ๋ ์ ์ผ๋ก ์๋ชป๋์์ต๋๋ค.
์๋ง๋ ๋ ธ๋ ์์ฑ ๋ํ ์์๊ฐ ์ ํด๋์ค๊ฐ ์ถ๊ฐ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ํ๋ ๊ฒ์ผ๋ก ์คํดํ ์ ์์ผ๋ฏ๋ก ์ด๋ฌํ ์ฌ์ฉ์ ์ ์ ์ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ช ํํ๊ฒ ํฌํจํ๋ ๊ฒ์ผ๋ก ํ์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
@Web-eWorks Mono๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์๋ก์ด ํด๋์ค์ด๊ธฐ ๋๋ฌธ์ ๋ง์น ์๋ก์ด ํด๋์ค๊ฐ ์ถ๊ฐ๋ ๊ฒ์ฒ๋ผ ํฌ๋ช ํ๊ฒ ๋ณด์ผ ๊ฒ์ ๋๋ค. GDScript์ ๊ฒฝ์ฐ ํด๋์ค๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ผ์ด๋ฏ๋ก ์ด ๋ฐฉ๋ฒ์ผ๋ก ์ํํ ์ ์์ผ๋ฏ๋ก ์ด๋ฅผ ์ํํ๋ ๋ฐฉ๋ฒ์ ์ค์ ์ ์ํด ์ ์ฉ UI๊ฐ ์๋ ์ ์ ์ญ์ ์ถ๊ฐํ๋ ๊ฒ์ผ ์ ์์ต๋๋ค(์ฑ๊ธํค ์๋ ๋ก๋์ ๊ฒฝ์ฐ์ ๊ฐ์ด)... ๊ทธ๋ฌ๋ ์ด๊ฒ์ ์ฌ์ ํ โโ์์ง ํด๋์ค๊ฐ ์๋ ์คํฌ๋ฆฝํธ ํด๋์ค์ ๋๋ค.
@willnationsdev ๋ด ์์ ์ ์์ง์ ์ค์ ์ ํด๋์ค๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ํ๋ ๊ฒ์ด ์๋ชป๋์๋ค๊ณ ์๊ฐํ๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ํผ๋์ค๋ฌ์ธ ์ ์์ต๋๋ค. ์คํฌ๋ฆฝํธ๊ฐ ์๋ ๋ ธ๋์ผ ๋ฟ์ด๋ฏ๋ก ์คํฌ๋ฆฝํธ๋ฅผ ์จ๊ธฐ๋ ๋์ ๋ง๋ค๊ธฐ ๋ํ ์์์์ ๋ ์ ๋ณด์ด๋๋ก ํ๋ ๊ฒ์ด ๋ง๋ค๊ณ ์๊ฐํฉ๋๋ค.
@reduz ๊ธ์์. Node+Script๋ Scene์ ๋๋ค. add_custom_type ๋ฉ์ปค๋์ฆ์ ํ์ค์ ๋ฐ๋ผ ๊ธฐ์ ์ ์ผ๋ก 'ํด๋์ค'๊ฐ ์๋๋๋ผ๋ '์ ํด๋์ค'๋ฅผ ๋ฑ๋กํ๋ Mono์ฒ๋ผ ์๋ํด์ผ ํฉ๋๋ค. ClassDB๋ฅผ ๊ฑด๋๋ฆด ํ์ ์์ด ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค๋ฉด ๋ชจ๋ ๊ท๋ด์ ๋ฃ๊ฒ ์ต๋๋ค.
๋ํ @akien-mga๋ ์ฅ๋ฉด ํธ๋ฆฌ ๋ณด๊ธฐ์์ ์ฌ์ฉ์ ์ง์ ๋ ธ๋์ ์คํฌ๋ฆฝํธ๋ฅผ ์จ๊ธธ ์ ์๋ค๊ณ ์ ์ํ์ฌ ์ฌ์ฉ์๊ฐ ํด๋น ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ค๊ณ ์ค์๋ก ํธ์งํ ๊ฒ์ ๋ํด ํผ๋์ ์ฃผ์ง ์๋๋ก ํ์ต๋๋ค(๊ทธ๋ฌ๋ ์ฌ์ ํ ๋งจ ์๋์ ๊ฒ์ฌ๊ธฐ์๋ ํ์๋จ) .
์ด๋ฌํ ๋ ธ๋์์ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ๋ฉด ์์ ๋ชจ๋์์ ์์ฑ ๋ํ ์์๊ฐ ์ด๋ฆฌ๋ฏ๋ก ์ฌ์ฉ์ ์ํฌํ๋ก์๋ ์ฌ์ ํ ๋งค์ฐ ํฌ๋ช ํ์ง๋ง ์์ง์ ์ผ๋ถ๊ฐ ์๋ ์ฌ์ฉ์ ์ง์ ๋ ธ๋์์ด ๋ถ๋ช ํฉ๋๋ค.
@willnationsdev ๊ตฌ์ฒด์ ์ผ๋ก ๊ตฌํ ๋ฒ์๋ฅผ ์์ธํ ์ค๋ช ํ๋ ๋ณด๋ค ๊ฐ๊ฒฐํ ์ ๋ฌธ์ ๋ฅผ ์ฌ๋ ๋ฐ ์ด์๊ฐ ์์ต๋๊น?
@Web-eWorks ๋ ธ๋ + ์คํฌ๋ฆฝํธ๋ ์ฅ๋ฉด์ด ์๋๋ฉฐ ํธ๋ฆฌ ๋ ์ด์์์ ๋ ธ๋๋ ์ฅ๋ฉด์ ๋๋ค. ๋ ธ๋๋ฟ๋ง ์๋๋ผ ์ฌ์ฉ์ ์ง์ ๋ฆฌ์์ค ์ ํ์ ์ถ๊ฐํ ์๋ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์๋์, ์ ํด๋์ค๋ฅผ ๋ฑ๋กํ๋ ๊ฒ์ฒ๋ผ ์๋ํ์ง ์์์ผ ํฉ๋๋ค. ์คํฌ๋ฆฝํธ๊ฐ ๋ฏธ๋ฆฌ ์ถ๊ฐ๋ C++ ํด๋์ค๋ผ๋ ๊ฒ์ด ๋ถ๋ช ํด์ผ ํฉ๋๋ค.
@Web-eWorks ์, ์ ์๊ฒ๋ ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค. ์ ๋ฅผ ์ธ๊ธํด์ฃผ์๋ฉด ํ์ ๋ฐ์ ์ ์์ต๋๋ค. ๊ทธ๋๋ ๋ณ๋์ ๋ฌธ์ ๊ฐ ํ์ํ์ง ํ์คํ์ง ์์ต๋๊น?
๋ค๋ฅธ ๊ด์ ์์ ๋ณด์ธ์. ๋น์ ์ ์ฃผ์ฅ์ ๋ง์น ์๋ก์ด ์์ง ์ ํ์ผ๋ก ์์ง ์ ํ์ ํ์ฅํ๋ ๊ฒ์ฒ๋ผ ์ฌ์ฉ์์๊ฒ ๋ณด์ด๋๋ก ํ๋ ๊ฒ์ ๋๋ค.
์ ๊ด์ ์ ์๋ก์ด ์์ง ์ ํ์ด ์๋๋ผ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ ์์ง ์ ํ์ ํ์ฅํ๊ณ ์๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์๋ ๋ฐ๋ณด๊ฐ ์๋๋ฉฐ ์ด๊ฒ์ ์์์ผ ํฉ๋๋ค.
@reduz ๋ด๊ฐ Node+Script์ ๋ํด ์๋ฏธํ ๊ฒ์ ๊ทธ ๋ฉ์ปค๋์ฆ์ด Scene์ ์ธ์คํด์คํํจ์ผ๋ก์จ ์ด๋ฏธ ๋ค๋ฃจ์ด์ก๋ค๋ ๊ฒ์ ๋๋ค.
Mono ๊ตฌํ์ ์๋ชป ์ดํดํ๊ณ ์์ ์ ์์ง๋ง Mono ํด๋์ค๋ ์ฌ์ ํ Scripts๊ฐ ์๋๋๊น?
@reduz ๋๋ ๋๋ถ๋ถ ๋น์ ์ ๋ง์ ๋์ํฉ๋๋ค. ๋ํ ๋น์ ์ด ์ฌ์ฉ์ ์ ์ ๋ ธ๋์ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ๋จ์ํ ๊ทธ๊ฒ์ ์์ํ๋๋ก ์ ์ํ ๊ฒ์ด๋ผ๊ณ ๋งํ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ด GDNative ๋ง์ถค ์ ํ์์ ์ด๋ป๊ฒ ์๋ํ ๊ฒ์ผ๋ก ์์ํฉ๋๊น?
@reduz ํ์ง๋ง ์ฐ๋ฆฌ ๋ชฉํ ์ค ํ๋๋ C++ ํด๋์ค์ ๋ฏธ๋ฆฌ ํ ๋น๋ ์คํฌ๋ฆฝํธ์ธ ์ฌ์ฉ์ ์ง์ ์ ํ ์คํฌ๋ฆฝํธ๋ฅผ ์ ๊ฑฐํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค. ๋ฐํ์์ ํญ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ ๊ฑฐํ ์ ์๊ธฐ ๋๋ฌธ์ ํธ์ง๊ธฐ ์ปจํ ์คํธ์์ ์ํํ ์ ์๋ ์์ ์ ๋๋ค(ํด๋น ๊ธฐ๋ฅ์ ์ ์งํ๊ณ ํธ์ง๊ธฐ์์ ๋์์ธ ํ์์ ์ฌ์ฉ์ ์ง์ ์ ํ ์คํฌ๋ฆฝํธ๋ง ๋ณดํธํ๋ ค๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด).
๋๋ ํ์คํ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ๋ํด ์ด๋ ค ์์ต๋๋ค. ์ด๋ ์ชฝ์ด๋ , ๊ฐ์ฅ ์ฌ์ด ๊ตฌํ์ ์ผ๋ถ ํ์ฌ ๋ฑ๋ก ํด๋์ค(ClassDB, ProjectSettings, EditorData ๋๋ ๋๊ฐ ๋ฌด์์ ์๊ณ ์๋์ง ์ฌ๋ถ)๋ฅผ ํ์ธํ์ฌ Object๊ฐ ์กฐ๊ฑด๋ถ๋ก ์คํฌ๋ฆฝํธ๋ฅผ ์์ฒด์ ํ ๋นํ๋๋ก ํ๋ ๊ฒ์ ๋๋ค(๋ด ๊ตฌํ์์ ์ํํ ๋๋ก). . ๊ทธ๋ฌ๋ฉด ํธ์ง๊ธฐ ์์ฒด๊ฐ ํด๋น ํ์ฌ์ ํ์ธํ๊ณ ๋ค๋ฅด๊ฒ ํ์ํ๋ ๊ฒ์ด ๋งค์ฐ ์ฌ์์ง๋๋ค(๋ด ๊ตฌํ์์ ์ํํ ๊ฒ์ฒ๋ผ). ๋ฑ๋ก์ ClassDB๊ฐ ์๋ ๋ค๋ฅธ ์ปจํ ์คํธ๋ก ์ฎ๊ธฐ๋ ๊ฒ์ ๊ทธ๋ค์ง ๋ง์ ์์ ์ด ์๋ ๊ฒ์ ๋๋ค.
^^ ๊ทธ ํํ์ด ๋ฐ์๋ค์ฌ์ง๊น์? ๊ทธ๋ ์ง ์์ผ๋ฉด Object๊ฐ ์ 3์์ ํ์ธํ๊ธฐ ์ํด ํ ๋น๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ป์ ์ ์๋ ๋ชจ๋ ๊ฐ๋ฅํ ์์น๋ฅผ ์ธ๋ถ์ ์ผ๋ก ๊ด๋ฆฌํด์ผ ํฉ๋๋ค. ํจ์ฌ ๋ ๋ณต์กํ ๊ฒ์ ๋๋ค.
๋ด๊ฐ ์ํํ ๊ตฌํ์ ์ง๊ธ๊น์ง ์ด๋ค "์ ํ"์ด ์คํฌ๋ฆฝํธ์ด๊ณ ์ด๋ค ๊ฒ์ด ์๋์ง์ ๋ํด ๋งค์ฐ ๋ช ํํ์ต๋๋ค. ๊ฒฐ๊ตญ ๋ด๊ฐ ๊ณต์ ํ ๋น๋์ค์ ์ฅ๋ฉด ๋ ์์ ์ฌ์ฉ์ ์ ์ ์ ํ๊ณผ ๊ด๋ จ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ ํ ๋ช ํํ๊ฒ ๋ณด๊ณ ์ก์ธ์คํ ์ ์์ต๋๋ค.
@willnationsdev ๋น์ ์ด ๋ฌด์์ ํ๋ ค๋์ง ์ดํด๋ ํ์ง๋ง ์ด๊ฒ์ด ๊ฒฐ์ฝ ๊น๋ํ๊ฒ ๋ง๋ค์ด์ง ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์จ๊ธธ ์ด์ ๊ฐ ์๋ ๋ณต์ก์ฑ์ ์์๋๋ก ์์ ํ ์๋ํ์ง ์๋ ๋ฐฉ์์ผ๋ก ์จ๊ธฐ๊ณ ์์ต๋๋ค.
@Zylann ๋๋ ๊ทธ๊ฒ์ด ๋์ผํ๋ค๊ณ ์๊ฐํ์ง๋ง a) ์คํฌ๋ฆฝํธ๊ฐ gdnative ๋ด๋ถ b) gdnative ๋ด๋ถ ๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์์งํ ๋งํ ๋งํผ ์ต์ํ์ง ์์ต๋๋ค.
@reduz ๊ฐ์ฒด์ ๋ํ ์คํฌ๋ฆฝํธ ๊ธฐ๋ฐ ์ ์ฝ ์กฐ๊ฑด์ ๋ง๋๋ ๊ฒ์ ํ์ฉํ์ง ์๋๋ค๋ ๋ง์์ด์ ๊ฐ์? ์ฒดํฌ ๋ก์ง์ ์๋ํฐ ์์ฒด๋ก ์ฎ๊ธธ ์ ์๊ธฐ ๋๋ฌธ์ ๋์์ธ ํ์์ ์ ์ฝ ์กฐ๊ฑด์ ์ฝ๊ฒ ํ์ธํ ์ ์์ง๋ง(์: UI ๋ณ๊ฒฝ) ๋ฐํ์์๋ ์๋ํ์ง ์์ผ๋ฏ๋ก ์ฌ๋๋ค์ ์ฌ์ ํ โโ์ ์ฌ์ ์ผ๋ก ๊ฒ์์ด ์คํ๋๋ฉด ์ํฉ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๊ทธ๊ฒ ๋น์ ์๊ฒ ๋ ์ข์๊น? ๊ทธ๋๋ ๋ฐํ์์ ๋ฌผ๊ฑด์ ํ์ธํ ์ ์์ผ๋ฉด ์ข๊ฒ ์ง๋ง...
@willnationsdev ์ด๋ค ์ข ๋ฅ์ ์คํฌ๋ฆฝํธ ๊ธฐ๋ฐ ์ ์ฝ์ ์ํํ๊ณ ์ถ์ต๋๊น?
์ฌ์ฉ์ ์ ์ ์คํฌ๋ฆฝํธ ์์ฑ์ด ์ฒ์๋ถํฐ ์์๋ ๊ฒ๊ณผ ๋์ผํ ์ ์ฝ ์กฐ๊ฑด: ํ ๋น๋ ์คํฌ๋ฆฝํธ๊ฐ ๋ค๋ฅธ ์คํฌ๋ฆฝํธ๋ฅผ ํ์ํ๋๋ก ๊ฐ์ ํฉ๋๋ค.
์ฅ๋ฉด ๊ณ์ธต์์ ํ์ฅ๋ ์คํฌ๋ฆฝํธ์ ๋ํ ์คํฌ๋ฆฝํธ ์์ด์ฝ์ ์จ๊ธฐ๊ณ ๊ณต๊ฒฉ๋ฐ์ ์คํฌ๋ฆฝํธ๋ฅผ ์์ํ๋ ๋ ธ๋์ ๊ธฐ๋ณธ ํด๋์ค๋ฅผ ์์ํ๋ ๋์ ๋๊ตฐ๊ฐ๊ฐ "์คํฌ๋ฆฝํธ ์ถ๊ฐ" ๋ฒํผ์ ํด๋ฆญํ๋ ๊ฒฝ์ฐ๋ฅผ ์ถ์ฒํฉ๋๋ค. ํฌ๋ช ํ๊ณ ClassDB๋ฅผ ์ ํ ์ด์ง๋ฝํ ํ์๊ฐ ์์ต๋๋ค.
๋ฐ๋ผ์ script_language.h
์ ์ผ๋ถ ์ ๋ณด๋ฅผ ๊ฒํ ํ๋ ๊ฒ๋ง์ผ๋ก๋ ClassDB
์ ์ถ๊ฐํ ์ ์ฝํ
์ธ ๋ฅผ ScriptLanguage
ํด๋์ค๋ก ์ฎ๊ธฐ๊ณ ์ผ์ข
์ ScriptDB
์ฑ๊ธํค์ ์คํฌ๋ฆฝํ
์ธ์ด์์ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ์๋ง ์์ฑ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ object.cpp
์๋ ์ด๋ฏธ script_language.h
๊ฐ ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ์ $# set_script(const RefPtr &p_script)
์์ ๋ค์์ ์ํํ ์ ์์ต๋๋ค.
p_script
๊ฐ ์ค์ ๋ก ์คํฌ๋ฆฝํธ์ธ์ง ํ์ธp_script
๊ฐ ์ํ ์ธ์ด ํ์ธp_script
๋ฐ Object
์ธ์คํด์ค์ custom_script
๋ฅผ ์ฐ๊ฒฐ๋ ScriptLanguage
์ ๋ํ ScriptDB
์ ์ ๋ฌํฉ๋๋ค.Object
์ ๋ํ custom_script
์ ์์๋ ์ ์ฝ ์กฐ๊ฑด์ด ์ฃผ์ด์ง๋ฉด p_script
๊ฐ Object
์ ํ ๋น๋ ์ ์๋์ง ์ฌ๋ถ์ ๋ํ ์๋ต์ ScriptDB
์์ ๋ฐ์ต๋๋ค. Object
์ธ์คํด์ค.์ด๋ ๊ฒ ํ๋ฉด ClassDB
๋ฅผ ์์ ํ์ง ์๊ณ object.h
๋ฅผ ๊นจ๋ํ๊ฒ ์ ์งํ ์ ์์ต๋๋ค( custom_script
์ ๋ํ setter/getter ์ ์ธ). ๋ํ ์๋ณ์์ ๋ค์์คํ์ด์ค๋ฅผ ์ ์ํ๊ธฐ ์ํด Godot์ ์์กดํ ํ์๊ฐ ์๋ ์คํฌ๋ฆฝํ
์ธ์ด์ ๋ถํ์ํ ๋ณต์ก์ฑ์ ๋ฐฉ์งํฉ๋๋ค(์: C#, C++, Python ๋ฑ๊ณผ ๋ฌ๋ฆฌ GDScript ๋ฐ VisualScript๋ ํ์ํจ).
๊ทธ๋ฐ ๋ค์ ์ฌ์ฉ์ ์ ์ ์ ํ/์ฌ์ฉ์ ์ ์ ์ ํ ์์์ ํ์ธํ๋ ์คํ์ ์ธ ClassDB
๊ธฐ๋ฅ์ ๋์ฒดํ๊ธฐ ์ํด ์ ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ์คํฌ๋ฆฝํ
์ธ์ด์์ ์๋ณ์/๋ค์์คํ์ด์ค ๊ฒ์ฌ๋ฅผ ์ํํ ์ ์๋ ScriptServer
๋ฉ์๋๋ฅผ ์ ์ํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ๊ณ์ธต. ์ถฉ๋ถํ ์ฝ์ต๋๋ค.
์ด ์ค ์ด๋ค ๊ฒ์ด ํ์ฉ ๊ฐ๋ฅํ ๋์ @reduz์ฒ๋ผ ๋ค๋ฆฝ๋๊น?
์ฌ๊ธฐ์ ๋ด ๋ชฉ์๋ฆฌ๋ฅผ ์ถ๊ฐํ๋ฉด ๋ฉ๋๋ค. ์ ๋ Godot์ ํจ๊ป ์ผํ๊ธฐ ์์ํ๊ณ ์ฌ์ฉ์ ์ ์ ์ ํ ์ ๋์จ์ ๋ํด ์ฝ์์ ๋ ์ ๋ง๋ก ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์๋ก์ด ๊ธฐ๋ณธ ์ ํ์ ๋ง๋ค ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค. KinematicBody
๋ฅผ ๋ง๋ค ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ฒจ๋ถํ ์ ์์ง๋ง ์ฌ์ ํ KinematicBody
์ ๋ชจ๋ ์์
์ ์ํํฉ๋๋ค.
์ด๊ฒ์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๊ฐํ๋ฉ๋๋ค.
@JPTeasdale ๋ถํํ๋ ์ด ์์ ์์ ๋ ํฐ ๊ด์ฌ์ฌ๋ ๊ตฌํ์ด ์๋๋ผ "์ด๋ฅผ ์ด๋ป๊ฒ ์ ์ํฉ๋๊น?" ์ง๋ฌธ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ Godot ์ฌ์ฉ์ ์ ์ ์ ํ์ ํ์ฅ ๊ฐ๋ฅํฉ๋๋ค(๊ทธ๋ฅ ์คํฌ๋ฆฝํธ์ผ ๋ฟ์ ๋๋ค). ํธ์ง๊ธฐ์๋ ๋ ธ๋ ์์ฑ ๋ํ ์์์์ ์ฌ์ฉ์ ์ ์ ์ ํ ๊ฐ์ ์์ ๊ด๊ณ๋ฅผ ํ์ํ๋ ์ฝ๋ ์ง์์ด ์์ง ์์ง๋ง ๋ฐ์ดํฐ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ํ "์ฌ์ฉ์ ์ ์ ์ ํ"์์ ๋ค๋ฅธ ์ด๋ฆ์ผ๋ก ์ด๋ฆ์ ๋ฐ๊ฟ ์ด์ ๊ฐ ์์ต๋๋ค. "์กฐ๋ฆฝ์"๊ณผ "ํ ํ๋ฆฟ"์ ์ค์ ๋ก ์ ์ ํ ์ฉ์ด๊ฐ ์๋๋ฉฐ ์ฒ์๋ถํฐ ์ฅ๋ฉด๋ ์๋๋๋ค(๊ทธ๋ฅ ๋จ์ํ๊ณ ๋จ์ํ ์คํฌ๋ฆฝํธ์ผ ๋ฟ์ ๋๋ค).
๋๋ ๊ทธ๊ฒ์ด ์๋ ํ ์๋ฃจ์ ๋ณด๋ค ํจ์ฌ ๊ฐ๋จํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
@MarianoGnu ๊ธ์, ํธ์ง๊ธฐ ๋ณ๊ฒฝ ์ฌํญ์ ๋ง๋๋ ์ธก๋ฉด์์ script
์์ฑ์ ์๋์ผ๋ก ์ฑ์ฐ๊ณ ์ฒ์๋ถํฐ null์ด ๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ ๊ฒ์ด ๋ ๊ฐ๋จํฉ๋๋ค. script
์์ฑ์ด๋ฉฐ script
์์ฑ์ ์ฐธ์กฐํ ๋๋ง๋ค ์ฐพ์ script
์ ๊ฐ๋ง ๋ณ๊ฒฝํ๋ฉด ํด๋น ์ฝ๋๋ฅผ ์์ ํ ํ์๊ฐ ์์ต๋๋ค. .
์ฆ, ์ด ํ๋ก์ธ์ค๋ฅผ ๋ค์ ์ํํ๋ ๋ชฉํ์ ์ผ๋ถ๋ ์ผ๋ฐ์ ์ผ๋ก ์คํฌ๋ฆฝํ
์ธ์ด๊ฐ ์คํฌ๋ฆฝํธ ํด๋์ค๋ฅผ ์ฐพ๊ธฐ ์ํด ํ์ผ ๊ฒฝ๋ก๊ฐ ์๋ ์๋ณ์๋ฅผ ์ฌ์ฉํ๋๋ก ์ ํํ๋ ๊ฒ์
๋๋ค. ์ด๊ฒ์ด ScriptDB
๊ฐ๋
๋๋ ClassDB
์์ ์ด ์ฒ์์ ์ ์๋ ์ ์ผํ ์ด์ ์
๋๋ค. ๊ทธ๋ฌ๋ ์ด์ Juan์ด ClassDB
๋ณ๊ฒฝ ์ฌํญ์ ๋ํด ๊ทธ๋ ๊ฒ๊น์ง ๋ฐ๋ํ๋ ์ด์ ๋ฅผ ์์์ต๋๋ค. ๋ฐ๋ผ์ ์คํฌ๋ฆฝํ
API์๋ง ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ฐ๋ณ ์คํฌ๋ฆฝํ
์ธ์ด๋ก ๋ ๋ชจ๋ ์ ๋ณด๊ฐ ์์ฒด์ ์ผ๋ก ํฌํจ๋์ด ์์ต๋๋ค.
๊ฐ์ฒด์ ๋ณด์ด์ง ์๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ ์ฅํ๋ ๋์ ScriptDB์ ์ ์ฅํ๋ ๋์ ์คํฌ๋ฆฝํธ ํ๋ ๊ธฐ์ ์ฌ์ ์ ๋ฌ์ ์ถ๊ฐํ์ฌ "extend CustomClassName"์ "extend "res:/path/stored/inScriptDB.gd๋ก ๋์ฒดํ ์ ์์ต๋๋ค. " GdScript์ ํ๋ฆฌ์ปดํ์ผ๋ฌ์์๋ ์คํฌ๋ฆฝํธ๋ฅผ ์คํฌ๋ฆฝํธ์์ ์์ ๊ณ์ธต ๊ตฌ์กฐ์์ ๋ฒ์ด๋๊ฒ ํ๋ ๊ฒ์ด ๋งค์ฐ ๋ฒ๊ฑฐ๋กญ๊ธฐ ๋๋ฌธ์(๊ณ์ธต ๊ตฌ์กฐ๋ ๋ฃจํธ์์ ๋งจ ์๋๋ก ์ง์ ์ด์ด์ผ ํ๋ฉฐ ๋ถ๊ธฐ๊ฐ ์์ผ๋ฉด ํผ๋์ ์ผ๊ธฐํฉ๋๋ค)
์คํฌ๋ฆฝํธ๋ฅผ ์คํฌ๋ฆฝํธ ์์ ๊ณ์ธต์์ ๋ฒ์ด๋๊ฒ ํ๋ ๊ฒ์ ๋งค์ฐ ๋ฒ๊ฑฐ๋กญ๊ธฐ ๋๋ฌธ์ ๋๋ค(๊ณ์ธต์ ๋ฃจํธ์์ ์๋๋ก ์ง์ ์ด์ด์ผ ํ๋ฉฐ ๋ถ๊ธฐ๊ฐ ์์ผ๋ฉด ํผ๋์ ์ผ๊ธฐํฉ๋๋ค)
@MarianoGnu ์ฌ๊ธฐ์ ์ฝ๊ฐ์ ์คํด๊ฐ ์์ ์ ์์ต๋๋ค. ์ด๋ ์์ ์์ ์์์ ์ง์ ์ด ์๋ค๊ณ ์๊ฐํฉ๋๊น? ๋ด๊ฐ ๊ตฌํํ๋ ํ, ์คํฌ๋ฆฝํธ ์ฌ์ด์๋ ํญ์ ๋งค์ฐ ๋ช ํํ ์์ ๊ณ์ธต์ด ์์ต๋๋ค. ์์ ๊ณ์ธต ์์ฒด๊ฐ ์๋ํ๋ ๋ฐฉ์์ ๋ํด์๋ ์๋ฌด ๊ฒ๋ ๋ณ๊ฒฝํ์ง ์์์ต๋๋ค. ๋ฐฉ๊ธ ์ฃผ์ด์ง ์คํฌ๋ฆฝํธ๋ฅผ StringName์ ๋งคํํ๊ณ ์ผ์ข ์ DB์์ ์ฐพ๋ ๊ฒ์ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฏธ ๊ทธ ์์
์ ์งํํ๊ณ ์๋ค๋ฉด ์คํฌ๋ฆฝํธ ํ
์คํธ๋ฅผ GDScript ์ปดํ์ผ๋ฌ์ ๊ฒฝ๋ก๋ก ๋ค์ ๋ฐ๊ฟ ์ด์ ๊ฐ ์์ต๋๋ค. ์ปดํ์ผ๋ฌ๊ฐ ํ๋ ์ผ์ Script
์ธ์คํด์ค๋ฅผ script
๋ณ์์ ํ ๋นํ๋ ๊ฒ์
๋๋ค. ResourceLoader::load(path)
๋ฉ์๋๋ฅผ ํตํด ์คํฌ๋ฆฝํธ๋ฅผ ๋ก๋ํ๋์ง ์๋๋ฉด $#$ Class/ScriptDB::get_script(namespace_and/or_identifier)
๋ฅผ ์ฌ์ฉํ์ฌ ์คํฌ๋ฆฝํธ๋ฅผ ๊ฐ์ ธ์๋์ง๋ ์ค์ํ์ง ์์ต๋๋ค.
์ธ๊ธํ๊ณ ์ถ์ ๊ฒ์ Godot์ ์๋ก์ด ์ฌ์ฉ์๋ก์ ํ๋ฌ๊ทธ์ธ์ "์ปค์คํ ๋ ธ๋"๊ฐ ๋นํธ์ธ ๋ ธ๋ ์ญํ ์ ํ ๊ฒ์ด๋ผ๋ ์ธ์ ํ์ ํ๋ฌ๊ทธ์ธ์ ๋ง๋ค์์ต๋๋ค. ์ฆ, ๋ ธ๋ ๋ชฉ๋ก์์ ์ ํํ์ ๋ ์คํฌ๋ฆฝํธ ์์ด ๋ ธ๋๋ฅผ ์ป์ ๊ฒ์ผ๋ก ์์ํ์ง๋ง ํ๋ฌ๊ทธ์ธ์์ ์คํฌ๋ฆฝํ ํ ๊ธฐ๋ฅ์ ์ด๋ฏธ ๋ด์ฅ๋์ด ์์ต๋๋ค(๋ด์ฅ ๋ ธ๋์ ๊ฒฝ์ฐ์ฒ๋ผ). ๋ฐฉ๊ธ ๋ค์ด์ค๋ ๋๊ตฐ๊ฐ๋ก๋ถํฐ ๋ค๋ฅธ ์๊ฒฌ์ ์ ์ํด์ผ ํ๋ค๊ณ ์๊ฐํ์ต๋๋ค(์ฌ๊ธฐ์์ ๋ ผ์๊ฐ ์ด๋ฏธ ๊ด๋ฒ์ํ๊ฒ ์งํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง).
"์ฌ์ฉ์ ์ ์ ๋ ธ๋"๋ ์คํฌ๋ฆฝํธ์ผ ๋ฟ์ด๋ฏ๋ก ์คํฌ๋ฆฝํธ๋ฅผ ๋ด์ฅ ๋ ธ๋์ ํ ๋นํ๋ ๊ฒ๊ณผ์ ์ฐจ์ด์ ์ ๋ฌด์์ ๋๊น? ์ฌ์ฉ์ ์ ์ ๋ ธ๋ ๊ธฐ๋ฅ์ ๋ฌด์์ ํด์ผ ํฉ๋๊น?
@MCrafterzz ํ๋ฌ๊ทธ์ธ์์ ์์ฑํ ์ปค์คํ ๋ ธ๋ ์์ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ ์ ์๋ ๊ธฐ๋ฅ์ ์ปค์คํ ๋ ธ๋์ ์ถ๊ฐํ๋ ๊ธฐ๋ฅ์ด ์์ด์ผ ํ๋ค๊ณ ๋ ผ์ํ์ต๋๋ค.
ํ์ฌ ์ปค์คํ ๋ ธ๋๋ ์คํฌ๋ฆฝํธ๊ฐ ์ด๋ฏธ ์ฒจ๋ถ๋์ด ์๊ณ ์์ด์ฝ๊ณผ ์ด๋ฆ์ด ์ด๋ฏธ ๋ณ๊ฒฝ๋ ๋ ธ๋๋ก ์์ฑ๋ฉ๋๋ค.
@willnationsdev ์ด ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฐ ์ด๋ ์ ๋ ๋๋ฌํ์ต๋๊น?
๋๋ ์ด ๊ธฐ๋ฅ์ด 3.1 ์ด์ ์ ์ฌ๊ธฐ์ ์์์ผ๋ฉด ์ ๋ง ์ข๊ฒ ์ต๋๋ค. ์ ๋ง ๋๋ผ์ด ์ถ๊ฐ ๊ธฐ๋ฅ์ด ๋ ๊ฒ์
๋๋ค.
Godot ํ๋ฌ๊ทธ์ธ ๋ฐ ์ ๋์จ ์์คํ
์ฉ.
๋๊ตฌ์๊ฒ๋ ์๋ ฅ์ ๊ฐํ๊ณ ์ถ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ ๋ฌด ๋ฐฉ์์ผ๋ก ๋ฐ์๋ค์ด์ง ๋ง์ญ์์ค.
๋๋ ์ฌ์ฉ์ ์ ์ ์ ํ ์์คํ ์ ๋ํ ์๋ก์ด ๋ฐฑ์๋๋ฅผ ์์ ํ ๊ตฌํํ์ต๋๋ค. ์๋ก์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์๊ฐ ์๋ ๊ธฐ๋ฅ์ ๋ชจ๋ ์ํํ ์ ์์ ๋ฟ๋ง ์๋๋ผ ์คํฌ๋ฆฝํธ ์ถ๊ฐ ๋ฒํผ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ์ ์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฅํ๋ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ๋๋ก ๋ง๋ค ์ ์์ต๋๋ค(์ฌ์ฉ์ ์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ๋ ๋์ ). ์ฌ์ฉ์ ์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ ๊ฑฐํ ์ ์์ต๋๋ค(๋ค๋ฅธ ์์ง ์ ํ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ํ ๋ณ๊ฒฝ ํธ์ง๊ธฐ ๋ช ๋ น์ ์ฌ์ฉํด์ผ ํจ).
@swarnimarun
๋ํ ์ฌ์ฉ์๋ ์ ํ ์ด๋ฆ ๋ ํ์ผ ๊ฒฝ๋ก ๋งคํ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ๊ณตํ๋ ์ ์ญ์ ์ ํ์ ๋ฑ๋กํ ์ ์์ต๋๋ค. GDScript๋ ์ด๋ฌํ ๋งคํ์ ๋ณธ์ง์ ์ผ๋ก ๋จ์ํ ์ ์ญ ์ ํ ์ด๋ฆ์ผ๋ก ์ธ์ํ ์ ์์ต๋๋ค. ๋ํ ์ ํ์ ๋ฑ๋กํ๊ธฐ ์ํด ์ฌ์ฉ์ ์ ์ ์ ํ์ผ ํ์๊ฐ ์์ผ๋ฉฐ ์ ํ์ ์คํฌ๋ฆฝํธ ๋๋ ์ฅ๋ฉด์ผ ์ ์์ต๋๋ค.
์ง๊ธ๊น์ง ์ ๋ฐฑ์๋๋ฅผ ๊ตฌํํ๊ณ ์๋ ์ฌ์ฉ์ ์ง์ ์ ํ ์คํฌ๋ฆฝํธ ๊ธฐ๋ฅ์ ๋ค์ ์ค์ ํ์ต๋๋ค. ํ์ฌ ์๋ก์ด ๊ธฐ๋ฅ์ ๊ฐ๋ฐ ์ค์ ๋๋ค. ์ง๊ธ๋ถํฐ ์๋ง ์ผ์ฃผ์ผ. ๋๋ ์ด๋ฒ ์ฃผ์ ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ฐ์ฉ๋๋ค.
@willnationsdev ๊ฑฑ์ ๋ง์ธ์. 3.1์ด ๋๋ฉด ๋ง์กฑํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋๋ ๊ทธ๊ฒ์ด ๊ฝค ๋ง์ ์์
์ด ๋ ์ ์๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค.
์ข์ ์ผ์ ๊ณ์ํ์ญ์์ค.
ํ์ฌ ํธ์ง๊ธฐ๋ ๋ ธ๋์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ๊ฒ ํ์ฅํ ์ ์๋ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
๋ ธ๋ ์์ฒด๋ ํ์ฌ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ @reduz ์ ์ฃผ์ ๊ด์ฌ์ฌ๋ ์ด๋ฏธ ์คํฌ๋ฆฝํธ๊ฐ ์ฒจ๋ถ๋์ด ์๋ค๋ ์ฌ์ค์ ์จ๊ธฐ๋ ๊ฒ์ด์์ต๋๋ค. ํํธ์ผ๋ก๋ ์ด๋ฅผ ์ฌ์ฉ์์๊ฒ ์จ๊ธฐ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ฐ๋ฉด์ ์ฌ์ฉ์ ์ ์ ๋ ธ๋์๋ ๊ฑฐ์ ํญ์ ์คํฌ๋ฆฝํธ๊ฐ ์ฒจ๋ถ๋์ด ์์ต๋๋ค. ์คํฌ๋ฆฝํธ๊ฐ ์์ผ๋ฉด ์ฌ์ฉ์ ์ ์ ๋ ธ๋๋ ์ถ๊ฐ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์ง ์๊ณ ์ฌ์ฉ์ ์ ์ ์์ด์ฝ์ด ์๋ ๊ธฐ์กด ์ผ๋ฐ ๋ ธ๋์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์ ์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฅํ ์ ์์ง๋ง ์ผ๋ฐ ์ฌ์ฉ์ ์ ์ ๋ ธ๋๊ฐ ํ์ฅ ์ฌ์ฉ์ ์ ์ ๋ ธ๋์ ๋์ผํ๊ฒ ๋ณด์ด๋ ๊ฒ์ ๋งค์ฐ ์ฑ๊ฐ์ ์ผ์ ๋๋ค.
์ฌ๊ธฐ ๋ด ๊ฐ๋จํ ์๋ฃจ์ ์ด ์์ต๋๋ค. ์ฌ์ฉ์ ์ ์ ๋ ธ๋์ ์คํฌ๋ฆฝํธ๊ฐ ์ฌ์ฉ์ ์ ์ ๋ ธ๋์ ์ ์์ ์๋ ์คํฌ๋ฆฝํธ์ ๋์ผํ ๊ฒฝ์ฐ ์คํฌ๋ฆฝํธ ์์ด์ฝ์ ๋ค์๊ณผ ๊ฐ์ด ํฌ๋ฏธํด์ ธ์ผ ํฉ๋๋ค.
์๋ฏธ:
์ฌ๋ฌ๋ถ, ์ค์ ์: ๋์ผํ ์ข ๋ฅ์ ๋ง์ ์ฌ์ฉ์ ์ ์ ๋ฉ๋ชจ๊ฐ ์๊ณ ๊ฐ ์คํฌ๋ฆฝํธ๊ฐ ์์ฒด ์ธ์คํด์ค์ ๋ํด ์ฌ์ฉ์ ์ ์๋์ด ์๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ ์ ๋ ธ๋ ์คํฌ๋ฆฝํธ๋ฅผ ๋ณ๊ฒฝํ๋ ค๋ฉด ์ด๋ป๊ฒ ๋ฉ๋๊น? ์ต์ ์ ๊ฒฝ์ฐ ์์ ํด์ผ ํ๊ณ ๊ทธ์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ชจ๋ ์ธ์คํด์ค๋ ์์ ํด์ผ ํ๋ฏ๋ก ์ธ์ ๋ฐ ์คํ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
์คํฌ๋ฆฝํธ๋ฅผ ์จ๊ธฐ๊ณ ์ถ์ง ์์ผ์ธ์? ์ข์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ custom_node ์คํฌ๋ฆฝํธ์ ํ๋ก์ ํธ ๋ ธ๋ ์คํฌ๋ฆฝํธ๋ฅผ ํ์ํฉ๋๋ค.
@aaronfranke ์ ์๊ฐ์๋ ์ด๊ฒ์ด ์ต๊ณ ์ ์๋ฃจ์ ์ ๋๋ค. ์ธ์คํด์คํ๋ ์ฅ๋ฉด์์๋ ์ด์ ์ ์ป์ ์ ์์ต๋๋ค.
@zatherz et al, ์ด์ #30697์ด ๊ตฌํ๋์์ผ๋ฏ๋ก ๊ฐ์ ํ ์ ์๋ ๊ฒ์ ๋ฌด์์ ๋๊น? https://github.com/godotengine/godot/issues/6067#issuecomment -238250383์ ์ค์ํ ๊ฒ์ด ์์ต๋๊น?
#30697์์ ์์ ํ ๋๋ก ์ข ๋ฃํฉ๋๋ค. https://github.com/godotengine/godot/issues/6067#issuecomment -238250383์ ์ค๋ช ๋ OP์ ์๋ ์ ์์ ๊ตฌํ๋์ง ์์์ง๋ง https:// ์์ @reduz ์ ์ฐ๋ ค๋ก ์ธํด ๋ฐ์ํ์ง ์์ต๋๋ค. github.com/godotengine/godot/issues/6067#issuecomment -239060186.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ด๊ฐ ์ดํดํ๋ ๋ฐ์ ๋ฐ๋ฅด๋ฉด ๊ธฐ๋ณธ ์ ๊ณต ๋ ธ๋์ฒ๋ผ ์๋ํ๋ ์ฌ์ฉ์ ์ง์ ๋ ธ๋๋ฅผ ์์ฑํ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. ์ฆ, ๋ค์ ๊ธฐ๋ฅ์ด ์์ด์ผ ํฉ๋๋ค.
RedNode2D
๋Node2D
๋ฅผ ํ์ฅํ๊ณ ์ฌ์ฉ์ ์ง์ ์คํฌ๋ฆฝํธ๋ฅผ ํตํด ์ ์๋ ๋นจ๊ฐ์ ๋ณ์กฐ๊ฐ ์์).extends RedNode2D
).์ด๋ ์ฌ์ฉ์ ์ ์ ๋ ธ๋๋ฅผ ์ ์ธํ ๋ "์์ฐ์ค๋ฌ์ด" ๊ธฐ๋์น์ด๋ฉฐ ๋งค์ฐ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ด ๋ ๊ฒ์ ๋๋ค. ๋๋ ๋ถ๋ถ์ ์ผ๋ก ๋์์ธ ๊ฒฐ์ ์ผ๋ก ์ธํด ์ง๊ธ๊น์ง ์ด๋ฐ ์์ผ๋ก ์๋ํ์ง ์๋๋ค๋ ๊ฒ์ ์์์ ์์งํฉ๋๋ค. ์์์ ์ค๋ช ํ ๊ฒ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ฐ์ง ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค๋ฉด ๋ง์ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์์ ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค. assetlib๋ ์ฆ์ ์ฌ์ฉํ ์ ์๋ ๋ง์ ์์ ์ ์ํํ๊ณ ๋ด์ฅ๋ ๊ฒ์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ ์ฌ์ฉ์ ์ง์ ๋ ธ๋๋ก ๊ฐ๋ ์ฐจ ์์ต๋๋ค.
๋ฌด์์ ํ ์ ์๋์ง/ํ์ง ๋ง์์ผ ํ๋์ง์ ๋ํ ํฉ์๊ฐ ์์ ๋๊น์ง ์ฌ๊ฐํฉ๋๋ค.