flexpanel_node_get_data 함수 설명
flexpanel_node_get_data
함수는 특정 노드의 데이터 구조체를 반환합니다. 이 함수는 노드가 생성될 때 초기 구조체나 JSON에서 데이터 멤버를 제공받았다면 그 데이터를 반환합니다. 만약 노드를 생성할 때 데이터 멤버가 설정되지 않았다면, 빈 데이터 구조체로 초기화되어 이 함수는 그 구조체를 반환합니다. 반환된 구조체는 노드의 데이터 구조체의 복사가 아니라 직접 참조이므로, 이 구조체를 수정하면 같은 노드에 대한 이후 호출에서 반환되는 데이터에 영향을 미칩니다.
문법
flexpanel_node_get_data(node);
인수 설명
인수 | 타입 | 설명 |
---|---|---|
node | Flex Panel Node | 데이터 구조체를 가져올 노드 |
반환값
- 구조체 (Struct)
예제 코드
다음은 노드의 위치 데이터와 데이터 구조체를 가져오는 예제입니다.
var _pos = flexpanel_node_layout_get_position(_node, false);
var _data = flexpanel_node_get_data(_node);
if (!struct_exists(_data, "inst")) {
// 인스턴스 생성
var _inst = instance_create_depth(_pos.left, _pos.top, _depth, obj_ui_element, {
name: _name,
width: _pos.width,
height: _pos.height
});
_data.inst = _inst;
} else {
var _inst = _data.inst;
_inst.x = _pos.left;
_inst.y = _pos.top;
_inst.width = _pos.width;
_inst.height = _pos.height;
}
이 코드는 노드의 위치 데이터와 데이터 구조체를 가져온 후, inst
변수가 존재하는지 확인합니다. 만약 존재하지 않으면 인스턴스를 생성하고 데이터 구조체에 저장합니다. 이미 존재한다면, 저장된 인스턴스를 업데이트합니다.
활용 예제
- 노드 데이터 초기화
gml var _data = flexpanel_node_get_data(_node); if (!struct_exists(_data, "score")) { _data.score = 0; // 점수 초기화 }
- 노드의 속성 업데이트
gml var _data = flexpanel_node_get_data(_node); _data.health = 100; // 건강 상태 업데이트
- 노드의 상태 저장
gml var _data = flexpanel_node_get_data(_node); _data.state = "active"; // 상태 저장
- 노드의 데이터 삭제
gml var _data = flexpanel_node_get_data(_node); if (struct_exists(_data, "inst")) { _data.inst = undefined; // 인스턴스 삭제 }
- 노드의 데이터 출력
gml var _data = flexpanel_node_get_data(_node); show_message("Score: " + string(_data.score)); // 점수 출력
이와 같은 방식으로 flexpanel_node_get_data
함수를 활용하여 노드의 데이터를 관리하고 업데이트할 수 있습니다.