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 변수가 존재하는지 확인합니다. 만약 존재하지 않으면 인스턴스를 생성하고 데이터 구조체에 저장합니다. 이미 존재한다면, 저장된 인스턴스를 업데이트합니다.

활용 예제

  1. 노드 데이터 초기화 gml var _data = flexpanel_node_get_data(_node); if (!struct_exists(_data, "score")) { _data.score = 0; // 점수 초기화 }
  2. 노드의 속성 업데이트 gml var _data = flexpanel_node_get_data(_node); _data.health = 100; // 건강 상태 업데이트
  3. 노드의 상태 저장 gml var _data = flexpanel_node_get_data(_node); _data.state = "active"; // 상태 저장
  4. 노드의 데이터 삭제 gml var _data = flexpanel_node_get_data(_node); if (struct_exists(_data, "inst")) { _data.inst = undefined; // 인스턴스 삭제 }
  5. 노드의 데이터 출력 gml var _data = flexpanel_node_get_data(_node); show_message("Score: " + string(_data.score)); // 점수 출력

이와 같은 방식으로 flexpanel_node_get_data 함수를 활용하여 노드의 데이터를 관리하고 업데이트할 수 있습니다.