buffer_peek 함수 설명
buffer_peek
함수는 주어진 버퍼에서 특정 오프셋 위치(바이트 단위)에서 특정 타입의 데이터를 읽어오는 기능을 제공합니다. 이 함수는 buffer_read
함수와 유사하지만, buffer_read
는 항상 버퍼의 현재 "seek" 위치에서 데이터를 읽고, 읽은 바이트 수만큼 이 위치를 이동시키는 반면, buffer_peek
은 현재 seek 위치를 변경하지 않고 데이터를 읽을 수 있습니다.
사용법
buffer_peek
함수를 사용하려면 다음과 같은 인자를 제공합니다:
- buffer: 사용할 버퍼
- offset: 버퍼 내에서 읽고자 하는 데이터의 오프셋 위치 (바이트 단위)
- type: 버퍼에서 읽을 데이터의 타입 (상수 목록 참조)
문법
buffer_peek(buffer, offset, type);
인자 설명
인자 | 타입 | 설명 |
---|---|---|
buffer | Buffer | 사용할 버퍼 |
offset | Real | 버퍼 내에서 읽을 데이터의 오프셋 위치 (바이트 단위) |
type | Buffer Data Type Constant | 버퍼에서 읽을 데이터의 타입 (상수 목록 참조) |
반환값
- 읽은 값 (Real, Boolean, String 등) 또는 실패 시
undefined
반환
예제
아래 코드는 버퍼에서 세 가지 값을 읽어와서 색상을 설정하는 예제입니다.
var _red = buffer_peek(buff, 1, buffer_u8);
var _green = buffer_peek(buff, 2, buffer_u8);
var _blue = buffer_peek(buff, 3, buffer_u8);
image_blend = make_colour_rgb(_red, _green, _blue);
위의 코드는 buff
라는 변수에 저장된 버퍼의 세 가지 다른 위치에서 값을 읽어와서 호출 인스턴스의 image_blend
를 설정하는 데 사용됩니다.
활용 예제
- 게임에서의 색상 추출
gml var color_data = buffer_peek(color_buffer, 0, buffer_u32);
- 오디오 데이터 읽기
gml var audio_sample = buffer_peek(audio_buffer, 4, buffer_float);
- 사용자 정의 데이터 구조 읽기
gml var player_health = buffer_peek(player_buffer, 8, buffer_u16);
- 네트워크 패킷 데이터 처리
gml var packet_id = buffer_peek(packet_buffer, 0, buffer_u8);
- 게임 상태 저장 및 불러오기
gml var score = buffer_peek(save_buffer, 12, buffer_u32);
이와 같이 buffer_peek
함수를 활용하여 다양한 데이터 타입을 버퍼에서 읽어올 수 있습니다.