์œ ๋‹ˆํ‹ฐ์—์„œ Instantiate์˜ ์ˆœ์„œ

Instantiate

Awake

OnEnable

Instantiate ์ดํ›„์— ์‹คํ–‰ํ•œ ํ•จ์ˆ˜

ex) tempObject = Instantiate(์–ด์ฉŒ๊ตฌ~) // tempObject.ํ•จ์ˆ˜

๋งˆ์ง€๋ง‰์ด Start


๊ทธ๋Ÿฐ๋ฐ ๋งŒ์•ฝ, Position์„ ์ง€์ •ํ•˜๊ณ  Parent๊นŒ์ง€ ์ง€์ •ํ•œ๋‹ค๋ฉด? ex) Instantiate(์ƒ์„ฑํ•  ์˜ค๋ธŒ์ ํŠธ, Position, Rotation, Parent)

Instantiate

Awake

OnEnable

Instantiate ์ดํ›„์— ์‹คํ–‰ํ•œ ํ•จ์ˆ˜

--์—ฌ๊ธฐ์„œ Parent๊ฐ€ ์ง€์ •๋œ๋‹ค == Position์ด ๋ฐ”๋€œ--

Start


๋ณ„๋„๋กœ SetParent๋ฅผ ํ•˜๋ฉด ์–ด๋–จ๊นŒ?

์˜ˆ๋ฅผ ๋“ค์–ด


tempObject = Instantiate(์ƒ์„ฑํ•  ์˜ค๋ธŒ์ ํŠธ, Position, Rotation)

tempObject.transform.SetParent(Parent)

tempObject.๋ฉ”์„œ๋“œ


๋ผ๊ณ  ์ฝ”๋“œ๋ฅผ ์งฐ๋‹ค๋ฉด?


ํ™•์ธ์„ ์œ„ํ•ด, ์ € '๋ฉ”์„œ๋“œ'๊ฐ€ tempObject์˜ World Position์„ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜๋ผ๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž.

SetParent๋ฅผ ํ•œ ํ›„์— ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ”๋€ Position์ด ๋‚˜์˜ฌ๊นŒ?


๋ชจ๋“  ๋™์ž‘๋งˆ๋‹ค Debug๋กœ ์œ„์น˜๋ฅผ ์ฐ์–ด๋ณด๋ฉด ๋†€๋ž๊ฒŒ๋„ ๊ทธ๋ ‡์ง€ ์•Š๋‹ค.

๋™์ผํ•˜๊ฒŒ ์ถœ๋ ฅ๋œ๋‹ค.

Instantiate

Awake

OnEnable

SetParent

tempObject.๋ฉ”์„œ๋“œ == Parent์˜ Position๊ณผ ๋ฌด๊ด€ํ•˜๊ฒŒ World Position

-- Parent์˜ Position ๋ฐ˜์˜ --

Start : Parent์˜ ์œ„์น˜๊ฐ€ ๋ฐ˜์˜๋œ Position


๊ฒฐ๊ตญ ์–ด๋–ป๊ฒŒ ํ•˜๋”๋ผ๋„ Parent์˜ ์œ„์น˜ ๋ฐ˜์˜์€ Start ์‹œ์ ์ด๋ž€ ๋œป


์ด ์žก์ง€์‹์ด ์–ธ์ œ ์“ฐ์ด๋ƒ?


๋‚˜๋Š” Awake๋ฅผ ์ดˆ๊ธฐํ™”์šฉ์œผ๋กœ ์ž์ฃผ ์‚ฌ์šฉํ•œ๋‹ค.

๋งŒ์•ฝ, ๋‚ด๋ถ€ ๋ณ€์ˆ˜๋ฅผ ํ˜„์žฌ ์˜ค๋ธŒ์ ํŠธ์˜ Position์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•˜๊ธฐ ์œ„ํ•ด Awake์—์„œ ์ดˆ๊ธฐํ™”๋ฅผ ํ•œ๋‹ค๊ณ  ํ•˜์ž.

์ € ๋ง๋Œ€๋กœ๋ผ๋ฉด Awake์—์„œ ํ•œ ์ดˆ๊ธฐํ™” Position๊ณผ Start ์ดํ›„์— Position์ด ๋‹ค๋ฅด๊ฒŒ ๋œ๋‹ค.

Position์„ ์„ธํŒ…ํ•˜๋Š” ๋‚ด๋ถ€ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค ํ•ด๋„ ์ € ์œ„์— ์ˆœ์„œ์— ๋”ฐ๋ผ์„œ ๊ฒฐ๊ตญ Start๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฐ›์•„์˜ค๋Š” Position์ด ๋‹ค๋ฅด๋‹ค.


๋ถ„๋ช… ์ œ๋Œ€๋กœ Position์„ ์žก๊ณ  ์ƒ์„ฑํ•œ ๊ฒƒ ๊ฐ™์€๋ฐ ์ด์ƒํ•œ ๊ณณ์— ์ƒ์„ฑ๋œ๋‹ค? ์ด ๋ถ€๋ถ„์—์„œ ๋ฌธ์ œ ์ƒ๊ธธ ํ™•๋ฅ  ๋†’์Œ


๋˜๋Š” ๋‚ด ๋ฒ„๊ทธ์˜€๊ฑฐ๋‚˜ ใ…‹