
๐ ๋ณธ ํฌ์คํ ์ Unity 6 ๊ณต์ ๋งค๋ด์ผ์ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์์ฑ๋์์ต๋๋ค.
Unity์ GameObject ํด๋์ค๋ ์ฌ(Scene) ์์ ์กด์ฌํ ์ ์๋ ๋ชจ๋ ๊ฒ์ ๋ํ๋
๋๋ค.
GameObject๋ Unity ์ฌ์ ๊ตฌ์ฑํ๋ ๊ธฐ๋ณธ ๋จ์๋ก, GameObject๊ฐ ์ด๋ป๊ฒ ๋ณด์ด๊ณ ์ด๋ค ๋์์ ํ๋์ง๋ฅผ ๊ฒฐ์ ํ๋ ๋ค์ํ ๊ธฐ๋ฅ์ ์ปดํฌ๋ํธ๋ค์ ๋ด๋ ์ปจํ
์ด๋ ์ญํ ์ ํฉ๋๋ค.
๋ชจ๋ GameObject๋ ์ฌ ๋ด์์์ ์ํ๋ฅผ ๋ํ๋ด๋ ์ปจํธ๋กค ์์๋ค์ ์ธ์คํํฐ(Inspector) ์๋จ์ ๊ณต์ ํฉ๋๋ค.
๋ฌผ๋ก ์์๋ค์ GameObject์ ์คํฌ๋ฆฝํธ API๋ฅผ ํตํด์๋ ์ ์ดํ ์ ์์ต๋๋ค.

๐ก ์ธ์คํํฐ์์ ๋ณธ ์ผ๋ฐ์ ์ธ GameObject ์์(์ด ๊ฒฝ์ฐ Directional Light).
๋นจ๊ฐ์์ผ๋ก ํ์๋ ๋ถ๋ถ์ด ์ฌ ์ํ ์์ฑ์ ๋๋ค.

GameObject๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ(active, ์ฌ์ง์ ๋์์๋ ๋๋ก ์ฒดํฌ ํ์๋ฉด ํ์ฑํ) ์ํ์ด์ง๋ง, ๋นํ์ฑํํ ์๋ ์์ต๋๋ค.
๋นํ์ฑํ๋๋ฉด ํด๋น GameObject์ ๋ถ์ฐฉ๋ ๋ชจ๋ ์ปดํฌ๋ํธ๊ฐ ๊บผ์ง๊ฒ ๋ฉ๊ณ
์ด ์ํ๊ฐ ๋๋ฉด ๋ ๋๋ง๋์ง ์๊ณ , Update๋ FixedUpdate ๊ฐ์ ์ผ๋ฐ์ ์ธ ์ฝ๋ฐฑ์ด๋ ์ด๋ฒคํธ๋ฅผ ๋ฐ์ง ์์ต๋๋ค.
์คํฌ๋ฆฝํธ์์๋ GameObject.SetActive ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ์ด๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค.
ํ์ฌ GameObject์ ํ์ฑ ์ํ๋ฅผ ์ฝ์ผ๋ ค๋ฉด GameObject.activeSelf๋ฅผ ์ฌ์ฉ
์ฌ ์์์ ์ค์ ๋ก ํ์ฑ ์ํ์ธ์ง ํ์ธํ๋ ค๋ฉด GameObject.activeInHierarchy๋ฅผ ์ฌ์ฉ
๐ก๋ถ๋ชจ ์ค ํ๋๋ผ๋ ๋นํ์ฑํ๋์ด ์์ผ๋ฉด, ์์ ์ active ์ค์ ์ด true์ฌ๋ ์ฌ์์๋ ํ์ฑํ๋์ง ์์ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋จ

Unity์ ์ผ๋ถ ์์คํ ๋ค(์ ์ญ ์กฐ๋ช (Global Illumination), ์คํด๋ฃจ์ (Occlusion), ๋ฐฐ์นญ(Batching), ๋ด๋น๊ฒ์ด์ (Navigation), ๋ฐ์ฌ ํ๋ก๋ธ(Reflection Probes) ๋ฑ)์ GameObject์ ์ ์ (Static) ์ํ๋ฅผ ํ์ฉํฉ๋๋ค.
Unity ์์คํ ๋ค์ด ํด๋น GameObject๋ฅผ ์ ์ ์ผ๋ก ์ธ์ํ ์ง ์ฌ๋ถ๋ GameObjectUtility.SetStaticEditorFlags๋ฅผ ์ฌ์ฉํด ์ ์ดํ ์ ์์ต๋๋ค.

ํ๊ทธ(Tag)๋ ์ฌ ์์์ GameObject์ ์ข
๋ฅ๋ฅผ ํ์ํ๊ณ ์๋ณํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
๋ ์ด์ด(Layer)๋ ๋น์ทํ์ง๋ง ๋ ๋๋ง์ด๋ ๋ฌผ๋ฆฌ ์ถฉ๋ ๊ฐ์ ํน์ ๋ด์ฅ ๋์์์ GameObject ๊ทธ๋ฃน์ ํฌํจํ๊ฑฐ๋ ์ ์ธํ๋ ์ฉ๋๋ก ๊ตฌ๋ถ๋ฉ๋๋ค.
์คํฌ๋ฆฝํธ์์๋ GameObject.tag ์ GameObject.layer ์์ฑ์ ์ฌ์ฉํด ํ๊ทธ์ ๋ ์ด์ด ๊ฐ์ ์์ ํ ์ ์๊ณ CompareTag ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ํ๊ทธ๊ฐ ์กด์ฌํ๋์ง ๊ฒ์ฆํ๋ฉด์ ํจ์จ์ ์ผ๋ก ํ๊ทธ๋ฅผ ๋น๊ตํ ์ ์๋ค.
(CompareTag ์ฌ์ฉ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น๋ ๋ฐ์ํ์ง ์์ต๋๋ค.)
๋ฐํ์(Runtime) ์ค์ ์ปดํฌ๋ํธ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
GameObject๋ฅผ ์ ์ฐจ์ ์ผ๋ก ์์ฑํ๊ฑฐ๋(GameObject๋ฅผ ์ฝ๋๋ก ์์ฑํ ๋), GameObject์ ๋์์ ๋์ ์ผ๋ก ์์ ํ ๋ ์ ์ฉํฉ๋๋ค.
๋ฐํ์์์ ์ปดํฌ๋ํธ๋ฅผ ์ถ๊ฐํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ AddComponent ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค.
< > ์์ ์ถ๊ฐํ ์ปดํฌ๋ํธ ํ์ ์ ์ง์ ํฉ๋๋ค.
์ปดํฌ๋ํธ๋ฅผ ์ ๊ฑฐํ๋ ค๋ฉด Object.Destroy ๋ฉ์๋๋ฅผ ํด๋น ์ปดํฌ๋ํธ์ ํธ์ถํด์ผ ํฉ๋๋ค.
๋ํ, ์คํฌ๋ฆฝํธ๋ฅผ ํตํด ์คํฌ๋ฆฝํธ ์ปดํฌ๋ํธ๋ ์ผ๋ถ ๋ด์ฅ ์ปดํฌ๋ํธ์ ํ์ฑํ/๋นํ์ฑํ๋ ๊ฐ๋ฅํฉ๋๋ค.
(์ด ๊ฒฝ์ฐ ํด๋น ์ปดํฌ๋ํธ๋ฅผ ํ๊ดดํ์ง ์๊ณ ๋ ๊ป๋ค ์ผค ์ ์์)
๋ฐํ์์์ ์ปดํฌ๋ํธ๋ฅผ ์ถ๊ฐํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ AddComponent<Type> ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
using UnityEngine;
using System.Collections;
public class AddComponentExample : MonoBehaviour
{
void Start()
{
SphereCollider sc = gameObject.AddComponent<SphereCollider>();
}
}
์ปดํฌ๋ํธ๋ฅผ ์ ๊ฑฐํ๋ ค๋ฉด Object.Destroy ๋ฉ์๋๋ฅผ ํด๋น ์ปดํฌ๋ํธ์ ํธ์ถํด์ผ ํฉ๋๋ค.
๊ฐ์ฅ ๊ฐ๋จํ ๊ฒฝ์ฐ๋ ๊ฐ์ GameObject์ ๋ถ์ด ์๋ ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ฅผ ์คํฌ๋ฆฝํธ์์ ์ ๊ทผํด์ผ ํ ๋์
๋๋ค.
(์ฐธ๊ณ ๋ก, GameObject์ ์ถ๊ฐ๋ ๋ค๋ฅธ ์คํฌ๋ฆฝํธ๋ค ๋ํ ์ปดํฌ๋ํธ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค)
์ํ๋ ์ปดํฌ๋ํธ ์ธ์คํด์ค์ ๋ํ ์ฐธ์กฐ(reference)๋ฅผ ์ป๊ธฐ ์ํด GetComponent ๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก๋ ์๋ ์์์ฒ๋ผ ๋ณ์์ ํ ๋นํด์ ์ฌ์ฉํฉ๋๋ค.
void Start ()
{
Rigidbody rb = GetComponent<Rigidbody>();
}
//์ปดํฌ๋ํธ ์ค Rigidbody๋ฅผ ์์๋ก ์ฌ์ฉ
์ฐธ์กฐ๋ฅผ ์ป์ผ๋ฉด, ์ธ์คํํฐ์์ ์ค์ ํ๋ฏ์ด ๊ทธ ์ปดํฌ๋ํธ์ ์์ฑ ๊ฐ์ ์ฝ๋์์ ์ง์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
void Start ()
{
Rigidbody rb = GetComponent<Rigidbody>();
// ์ค๋ธ์ ํธ์ Rigidbody ์ง๋์ ๋ณ๊ฒฝ
rb.mass = 10f;
}
๋ํ, ์ปดํฌ๋ํธ์ ๋ฉ์๋๋ ํธ์ถํ ์ ์์ต๋๋ค.
void Start ()
{
Rigidbody rb = GetComponent<Rigidbody>();
// Rigidbody์ ์์ชฝ ๋ฐฉํฅ์ผ๋ก ํ์ ๊ฐํจ
rb.AddForce(Vector3.up * 10f);
}
๐กํ๋์ GameObject์๋ ์ฌ๋ฌ ๊ฐ์ ์ปค์คํ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
๋ค๋ฅธ ์คํฌ๋ฆฝํธ์์ ์ ๊ทผํ๋ ค๋ฉด ๋ง์ฐฌ๊ฐ์ง๋ก GetComponent ๋ฅผ ์ฌ์ฉํด ์ํ๋ ์คํฌ๋ฆฝํธ ํด๋์ค ์ด๋ฆ(๋๋ ํ์ผ๋ช ) ์ ํ์ ์ผ๋ก ์ง์ ํ๋ฉด ๋ฉ๋๋ค.
๐ก๋ง์ฝ GameObject์ ์๋ ํ์ ์ ์ปดํฌ๋ํธ๋ฅผ GetComponent๋ก ๊ฐ์ ธ์ค๋ ค๊ณ ํ๋ฉด null์ ๋ฐํํฉ๋๋ค. null์ธ ์ํ์์ ์์ฑ์ด๋ ๋ฉ์๋์ ์ ๊ทผํ๋ ค ํ๋ฉด ๋ฐํ์์์ NullReference ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์คํฌ๋ฆฝํธ๊ฐ ๋๋ก๋ ๋
๋ฆฝ์ ์ผ๋ก ๋์ํ๊ธฐ๋ ํ์ง๋ง, ๋ค๋ฅธ GameObject๋, ๋ ํํ๊ฒ๋ ๋ค๋ฅธ GameObject์ ์๋ ์ปดํฌ๋ํธ๋ฅผ ์ถ์ ํ๊ณ ๊ด๋ฆฌํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
Unity์์๋ ์ด๋ฌํ ๋ค๋ฅธ ์ค๋ธ์ ํธ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ค์ํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
๊ฐ์ฅ ์ง๊ด์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ์คํฌ๋ฆฝํธ์ public GameObject ๋ณ์๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ๋๋ค.
public class sorcerer : MonoBehaviour
{
public GameObject Wizard;
//๊ทธ ์ธ์ ์ฝ๋ ๋ด์ฉ
}
์ด ๋ณ์๋ ์ธ์คํํฐ(Inspector) ์ฐฝ์ GameObject ํ๋๋ก ํ์๋ฉ๋๋ค.
์ฌ์ด๋ ๊ณ์ธต ํจ๋์์ ์ค๋ธ์ ํธ๋ฅผ ๋์ด๋ค ์ด ๋ณ์ ์นธ์ ๋๋กญํ์ฌ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.

๐กํ๋ก์ ํธ ์ฐฝ(Project Window)์ ํ๋ฆฌํน(Prefab)์ ์ธ์คํํฐ์ GameObject ํ๋๋ก ๋๋๊ทธํด ๋ฃ์ ์๋ ์์ต๋๋ค.
GetComponent ํจ์์ ์ปดํฌ๋ํธ ์ ๊ทผ ๋ณ์๋ ์ด๋ ๊ฒ ์ฐ๊ฒฐ๋ ์ค๋ธ์ ํธ์๋ ๋๊ฐ์ด ์ฌ์ฉํ ์ ์์ต๋๋ค.
public class sorcerer : MonoBehaviour {
public GameObject Wizard;
void Start() {
// ์์๋์ ์์น ๊ธฐ์ค์ผ๋ก ์์๋ฌ๋ฅผ 2 ์ ๋ ์์ ๋ฐฐ์น
transform.position = Wizard.transform.position + Vector3.forward * 2f;
}
}
๋ํ, ์คํฌ๋ฆฝํธ์์ ํน์ ์ปดํฌ๋ํธ ํ์
์ public ๋ณ์๋ฅผ ์ ์ธํ๋ฉด,
ํด๋น ์ปดํฌ๋ํธ๊ฐ ๋ถ์ด ์๋ ์ด๋ค GameObject๋ ๋๋๊ทธํด ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
์ด ๊ฒฝ์ฐ GameObject ์์ฒด๊ฐ ์๋๋ผ ์ปดํฌ๋ํธ๋ฅผ ๋ฐ๋ก ์ฐธ์กฐํ๊ฒ ๋ฉ๋๋ค.
public Transform playerTransform;
์ด ๋ฐฉ๋ฒ์ ์ฅ์ :
์๊ตฌ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด์ผ ํ๋ ๊ฐ๋ณ ์ค๋ธ์ ํธ๋ค ๊ฐ ์ฐ๊ฒฐ์ ๋ง๋ค๊ธฐ์ ๋งค์ฐ ํธ๋ฆฌ
๊ฐ์ ํ์
์ ์ฌ๋ฌ ์ค๋ธ์ ํธ๋ฅผ ์ฐ๊ฒฐํ๋ ค๋ฉด ๋ฐฐ์ด ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์์
๋จ, ๋ฐฐ์ด์ ๋ฃ์ ๊ฐ๋ณ ์ฐ๊ฒฐ์ ์ฌ์ ํ ์๋ํฐ์์ ์๋์ผ๋ก ์ง์ ํด์ผํจ
์ฌ์๋ ์ข
์ข
๊ฐ์ ํ์
์ ์ฌ๋ฌ GameObject(์: ์์ง ์์ดํ
, ์จ์ดํฌ์ธํธ, ์ฅ์ ๋ฌผ ๋ฑ)๊ฐ ํ์ํฉ๋๋ค. ์ด๋ค์ ์ผ์ผ์ด ๋ณ์์ ๋๋๊ทธํด ์ฐ๊ฒฐํ๋ฉด ๋ฒ๊ฑฐ๋ก์์ง๋๋ค.
์๋ก์ด ์จ์ดํฌ์ธํธ๋ฅผ ์ถ๊ฐํ ๋๋ง๋ค ๋ณ์์ ์ถ๊ฐํด์ผ ํ๊ณ ์ญ์ ํ๋ฉด ๋ณ์ ์ฐธ์กฐ๋ ์ง์์ผ ํ๋ ๋ถํธํจ์ด ์์ต๋๋ค.
๐ก๊ฒ์ ์ค๋ธ์ ํธ์ ์์ ์ค๋ธ์ ํธ๊ฐ ๋ช์ญ๊ฐ ๋๋ ๊ฒฝ์ฐ ๋๋๊ทธ๋ก ํ๋ํ๋ ์ฎ๊ฒจ์ ์ ์ฉํ๊ธฐ๊ฐ ์ด๋ ค์(ex: ๋ฐฐ๊ฒฝ์ ๋๋ฌด๋ฅผ 300๊ทธ๋ฃจ ์ฌ์๊ฒฝ์ฐ ๋ฑ)
์ด๋ ๋ชจ๋ ๊ด๋ จ GameObject๋ฅผ ํ๋์ ๋ถ๋ชจ GameObject ์๋์ ์์์ผ๋ก ๋ฐฐ์นํ๋ฉด ๋ถ๋ชจ์ Transform ์ปดํฌ๋ํธ๋ฅผ ํตํด ์์ GameObject๋ค์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
(๋ชจ๋ GameObject๋ Transform์ ํฌํจํ๋ฏ๋ก ๊ฐ๋ฅ)
using UnityEngine;
public class WaypointManager : MonoBehaviour {
public Transform[] spellbook;
void Start()
{
spellbook = new Transform[transform.childCount];
int i = 0;
foreach (Transform t in transform)
{
spellbook[i++] = t;
}
}
}
๋ํ, ์์ ์ค๋ธ์ ํธ๋ฅผ ์ด๋ฆ์ผ๋ก ์ง์ ์ฐพ์ ์๋ ์์ต๋๋ค.
transform.Find("VIN'Spells");
์ด ๋ฐฉ๋ฒ์ ๋ฏธ๋ฆฌ ์ค์ ํ ์ ์๋ ๊ฒ์ ํ๋ ์ด ์ค์ ์ถ๊ฐ๋๊ฑฐ๋ ์ ๊ฑฐ๋ ์ ์๋ ์์ ์ค๋ธ์ ํธ๋ฅผ ๊ด๋ฆฌํ ๋ ์ ์ฉํฉ๋๋ค.
(์: ๊ฒ์ ์ค์ ์ง์๋ค ๋์ ์ ์๋ ๋๊ตฌ๋ ์ฅ๋น๋ฅ ๊ฐ์ ๊ฒฝ์ฐ.)
ํ๋ก์ ํธ๋ฅผ ํธ์งํ ๋ ์ธ์คํํฐ(Inspector)์์ GameObject ๊ฐ์ ์ฐธ์กฐ๋ฅผ ๋ฏธ๋ฆฌ ์ค์ ํ ์ ์์ต๋๋ค.
ํ์ง๋ง ๊ฒ์ ๋ด์์ ์บ๋ฆญํฐ ์ฃผ๋ณ์ ๊ฐ์ฅ ๊ฐ๊น์ด ์์ดํ
์ ์ฐพ๋๋ค๊ฑฐ๋, ์ฌ์ด ๋ก๋๋ ํ์ ์์ฑ(Instantiate)๋ GameObject์ ๋ํ ์ฐธ์กฐ๋ฅผ ๋ง๋ค์ด์ผ ํ๋ ๊ฒฝ์ฐ์ฒ๋ผ, ์ฌ์ ์ ์ค์ ํ ์ ์๋ ์ํฉ๋ ์์ต๋๋ค.
์ด๋ด ๋๋ ๋ฐํ์์์ ์ฐธ์กฐ๋ฅผ ์ฐพ์๋ด๊ณ GameObject ๊ฐ์ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ๋ฐฉ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฌ ๊ณ์ธต ๊ตฌ์กฐ ์ด๋์ ์๋ , ์๋ณํ ์ ๋ณด๋ง ์์ผ๋ฉด GameObject๋ฅผ ์ฐพ์๋ผ ์ ์์ต๋๋ค.
๊ฐ๋ณ ์ค๋ธ์ ํธ๋ GameObject.Find ํจ์๋ฅผ ์ฌ์ฉํด ์ด๋ฆ์ผ๋ก ๊ฒ์ํ ์ ์์ต๋๋ค.
GameObject player;
void Start()
{
player = GameObject.Find("MainHeroCharacter");
}
๋์ ์ค๋ธ์ ํธ๋ ์ฌ๋ฌ ์ค๋ธ์ ํธ๋ฅผ ํ๊ทธ(tag) ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฐพ์ ์๋ ์์ต๋๋ค.
GameObject spellbook;
GameObject[] spells;
void Start()
{
//๊ฒ์์์ ๋ง๋ฒ์์ ์บ๋ฆญํฐ๋ ํ ๊ฐ, ๊ฐ๋ฐฉ์๋ ์ฌ๋ฌ ๊ฐ์ ์ฃผ๋ฌธ์๊ฐ ์๋ค๊ณ ๊ฐ์ ํ ๋
spellbook = GameObject.FindWithTag("SpellBook");
spells = GameObject.FindGameObjectsWithTag("Spell");
}
ํ๋ก์ ํธ๊ฐ ์คํ ์ค์ผ ๋ GameObject๋ฅผ ์์ฑํ๊ฑฐ๋ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
Unity์์๋ Instantiate ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ๊ธฐ์กด ์ค๋ธ์ ํธ์ ์ ๋ณต์ฌ๋ณธ์ ๋ง๋ค์ด GameObject๋ฅผ ์์ฑํฉ๋๋ค.
(์์ธํ ์ค๋ช
๊ณผ ์์ ๋ Instantiating Prefabs at Runtime ๋ฌธ์๋ฅผ ์ฐธ๊ณ )
public GameObject fireball;
void OnTriggerEnter(Collider other) {
if (other.gameObject.tag == "Summonfire") {
// fireball์ ํ์ฌ ์์น์ ์์ฑ
Instantiate(fireball, transform.position, Quaternion.identity);
}
}
Destroy ๋ฉ์๋๋ ์ง์ ํ ์ค๋ธ์ ํธ๋ฅผ ํ๋ ์ ์ ๋ฐ์ดํธ๊ฐ ๋๋ ํ ํน์ ์ง์ ํ ์ง์ฐ ์๊ฐ ์ดํ์ ์ ๊ฑฐํฉ๋๋ค.
void OnCollisionEnter(Collision otherObj) {
//OnCollisionEnter๋ ์ถฉ๋์๋ผ๋ ์ ๋๋ง ์ผ๋จ ์๊ฐํด๋ ์ข๋ค.
if (otherObj.gameObject.tag == "Garbage can") {
Destroy(gameObject, 0.5f);
}
}
Destroy ํจ์๋ ๊ฐ๋ณ ์ปดํฌ๋ํธ๋ง ์ ๊ฑฐํ ์๋ ์๊ณ , GameObject ์์ฒด์๋ ์ํฅ์ ์ฃผ์ง ์์ ์๋ ์์ต๋๋ค.
ํํ ์ค์ ์:
Destroy(this);
this๋ ์คํฌ๋ฆฝํธ ์์ ์ ์๋ฏธํฉ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์คํฌ๋ฆฝํธ ์ปดํฌ๋ํธ๋ง ์ ๊ฑฐ๋๊ณ , GameObject๋ ๊ทธ๋๋ก ๋จ์ ์์ง๋ง ์ด ์คํฌ๋ฆฝํธ ์ปดํฌ๋ํธ๋ง ์ ๊ฑฐ๋ฉ๋๋ค.
๐กInstantiate๋ ํ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ค๋ธ์ ํธ๋ฅผ ํ ๋นํ๊ณ Destroy๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ๋ฐ์์ํด. ์์ฑ๊ณผ ์ญ์ ๋ฅผ ์์ฃผ ๋ฐ๋ณตํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ํ ๋น/ํด์ ๊ฐ ์ฆ์์ ธ์ GC(๊ฐ๋น์ง ์ปฌ๋ ์ ) ์คํ์ดํฌ๊ฐ ์ผ์ด๋จ.
๊ทธ ์ธ์๋ ๋ง์ ์ฑ๋ฅ ์ด์๊ฐ ์์ด์ ์ ์คํ๊ฒ ์ฌ์ฉํด์ผ ํจ
GameObject ํด๋์ค๋ Unity ์๋ํฐ์ GameObject ๋ฉ๋ด์์ ์ ๊ณตํ๋ ๊ธฐ๋ณธ(Primitive) ์ค๋ธ์ ํธ ์์ฑ ์ต์ ์ ์คํฌ๋ฆฝํธ๋ก ๋์ฒดํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
Unity์ ๋ด์ฅ๋ ๊ธฐ๋ณธ ํ์์ ์ธ์คํด์คํํ๋ ค๋ฉด GameObject.CreatePrimitive ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ธ์.์ด ๋ฉ์๋๋ ์ง์ ํ ํ์ ์ ๊ธฐ๋ณธ ์ค๋ธ์ ํธ๋ฅผ ์์ฑํฉ๋๋ค.

๐กPrimitives๋ Unity์ GameObject ๋ฉ๋ด์์๋ ๋ฐ๋ก ์์ฑํ ์ ์์ต๋๋ค.
๋ฉ๋ด์์ ์ ๊ณตํ๋ Primitive shapes๋ฅผ ์ฝ๋๋ก ์์ฑํ ๋ ์ ๋ฉ์๋๋ฅผ ํ์ฉํ๋ฉด ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค.
https://docs.unity3d.com/Manual/class-GameObject.html