객체와 인스턴스 이해하기
이 문서는 GameMaker에서 객체(Object)와 인스턴스(Instance)의 차이점을 설명합니다. 이를 통해 게임에서 어떻게 객체를 활용할 수 있는지에 대한 이해를 돕고자 합니다.
객체와 인스턴스의 정의
- 객체(Object): 객체는 인스턴스의 기본 템플릿입니다. 방에 직접적으로 존재하지 않으며, 방에는 오직 객체의 인스턴스만 있습니다.
- 인스턴스(Instance): 인스턴스는 객체의 구체적인 구현으로, 실제 게임 내에서 상호작용할 수 있는 요소입니다.
인스턴스의 속성을 전체적으로 변경하고 싶다면 객체를 수정하면 되며, 기존에 배치된 인스턴스에는 영향을 미치지 않습니다. 수정된 객체를 기반으로 한 새로운 인스턴스가 생성될 때만 변경 사항이 적용됩니다.
객체 속성 및 메서드
GameMaker에서는 객체에 대한 정보를 얻고 조작할 수 있는 여러 함수를 제공합니다. 필수적인 함수 목록은 다음과 같습니다:
| 함수 이름 | 설명 |
|---|---|
object_index |
객체의 인덱스를 반환합니다. |
object_exists |
객체가 존재하는지 확인합니다. |
object_get_name |
객체의 이름을 반환합니다. |
object_get_mask |
객체의 마스크를 반환합니다. |
object_get_parent |
객체의 부모를 반환합니다. |
object_get_persistent |
객체가 영구적으로 존재하는지 확인합니다. |
object_get_solid |
객체가 충돌 가능한 물체인지 확인합니다. |
object_get_sprite |
객체의 스프라이트를 반환합니다. |
object_get_visible |
객체가 보이는지를 확인합니다. |
object_get_physics |
객체의 물리 속성을 반환합니다. |
object_is_ancestor |
특정 객체가 조상인지 여부를 확인합니다. |
객체 속성 설정
객체의 속성을 설정하는 함수도 존재합니다. 주의할 점은, 이미 존재하는 인스턴스에는 이러한 변경이 적용되지 않지만, 이후에 생성되는 인스턴스에는 적용됩니다. 따라서 인스턴스가 있는 상태에서는 객체의 속성을 수정하지 않는 것이 좋습니다. 주요 함수 목록은 다음과 같습니다:
| 함수 이름 | 설명 |
|---|---|
object_set_mask |
객체의 마스크를 설정합니다. |
object_set_persistent |
객체를 영구적으로 설정합니다. |
object_set_solid |
객체를 충돌 가능한 물체로 설정합니다. |
object_set_sprite |
객체의 스프라이트를 설정합니다. |
object_set_visible |
객체의 가시성을 설정합니다. |
이벤트 생성 및 부모-자식 관계 활용
특정 인스턴스 또는 객체 내에서 코드에서 이벤트를 생성할 수 있는 함수도 있습니다. 이는 특히 부모 및 자식 객체와 관련된 작업을 할 때 유용합니다.
예시 코드:
if (object_exists(parent_object_id)) {
var parentIndex = parent_object_id.object_index;
// 부모 객체에 대한 특정 작업 수행
}
위 코드는 지정한 부모 객체가 존재하면 해당 객체의 인덱스를 가져와 부모 객체에 대한 작업을 수행하는 예입니다.
결론
이번 문서에서는 GameMaker의 객체와 인스턴스에 대해 간단히 설명하였습니다. 객체와 인스턴스를 이해하고 적절히 활용함으로써 게임 개발을 보다 유연하게 진행하실 수 있습니다.