시퀀스 오브젝트 구조체
시퀀스 오브젝트 구조체는 시퀀스 자산에서 가져온 구조체의 이름입니다. 런타임 동안 모든 시퀀스 데이터는 이 구조체에 저장되며, 방에서 생성된 시퀀스의 모든 요소가 참조합니다. 즉, 이 구조체의 변수(또는 그 내부의 중첩 구조체)가 수정되면 원래의 시퀀스가 변경되고, 기존의 시퀀스 요소에도 영향을 미칩니다.
이 구조체는 다음과 같은 변경 가능한 속성을 가집니다:
| 속성 이름 | 타입 | 설명 |
|---|---|---|
| name | String | 시퀀스의 이름을 나타내는 문자열입니다. 이 값을 필요에 따라 가져오거나 설정할 수 있습니다. sequence_create 함수를 사용하여 생성된 시퀀스는 이름이 없으며, 이 값은 빈 문자열("")입니다. |
| loopmode | Sequence Play Mode Constant | 시퀀스 오브젝트의 재생 모드로, 가져오거나 설정할 수 있습니다. 아래 표의 상수 중 하나일 수 있습니다. |
| playbackSpeed | Real | 시퀀스의 재생 속도를 지정합니다. 이는 초당 프레임 또는 게임 프레임당 프레임으로 해석됩니다. 이 값을 가져오거나 설정할 수 있습니다. |
| playbackSpeedType | Sprite Speed Constant | playbackSpeed가 어떻게 해석되어야 하는지를 지정합니다. 이 값을 가져오거나 설정할 수 있습니다. |
| length | Real | 시퀀스의 길이를 프레임 단위로 나타냅니다. 이 값을 가져오거나 설정할 수 있지만, 시퀀스 인스턴스가 새로운 길이를 초과하는 재생 헤드를 설정하면 문제가 발생할 수 있습니다. |
| volume | Real | 0에서 1까지의 스칼라 값으로, 시퀀스의 모든 오디오 트랙의 볼륨을 조절하는 데 사용됩니다. 이 값을 가져오거나 설정할 수 있으며, 모든 트랙의 전역 오디오 출력을 수정합니다. |
| xorigin | Real | X축을 따라 시퀀스의 원점을 나타냅니다. |
| yorigin | Real | Y축을 따라 시퀀스의 원점을 나타냅니다. |
| messageEventKeyframes | Array of Sequence Keyframe Structs | 시퀀스의 메시지 이벤트 키프레임에 접근할 수 있게 해줍니다. 이 속성을 가져오면 키프레임 구조체의 배열이 반환되며, 설정할 때는 키프레임 구조체의 배열을 제공해야 합니다. |
| momentKeyframes | Array of Sequence Keyframe Structs | 시퀀스의 순간 이벤트 키프레임에 접근할 수 있게 해줍니다. 이 속성을 가져오면 키프레임 구조체의 배열이 반환되며, 설정할 때는 키프레임 구조체의 배열을 제공해야 합니다. |
| tracks | Array of Sequence Track Structs | 시퀀스의 최상위 자산 트랙 목록에 접근할 수 있게 해줍니다. 이 속성을 가져오면 트랙 구조체의 배열이 반환되며, 설정할 때는 트랙 구조체의 배열을 제공해야 합니다. |
loopmode 상수
| 상수 이름 | 설명 | 값 |
|---|---|---|
| seqplay_oneshot | 시퀀스가 한 번 재생되고 완료되면 정지합니다. | 0 |
| seqplay_loop | 시퀀스가 반복되며, 재생 영역의 끝에 도달하면 시작으로 돌아갑니다. | 1 |
| seqplay_pingpong | 시퀀스가 반복되며, 재생 영역의 끝에 도달하면 방향을 반대로 바꿉니다. | 2 |
참고 사항
- 시퀀스 에디터에서 생성된 시퀀스의 속성에 접근하려면 먼저 자산 인덱스에서
sequence_get함수를 호출하여 시퀀스 오브젝트 구조체를 가져와야 합니다. - 이 시퀀스 구조체에 대한 변경 사항은 모든 후속 인스턴스에도 적용되며, 게임이 실행되는 동안 유지됩니다.
game_restart함수를 호출하더라도 유지됩니다.
활용 예제
// 시퀀스 생성
var mySequence = sequence_create();
// 시퀀스 이름 설정
mySequence.name = "My First Sequence";
// 재생 모드 설정
mySequence.loopmode = seqplay_loop;
// 재생 속도 설정
mySequence.playbackSpeed = 30;
// 볼륨 설정
mySequence.volume = 0.8;
// 시퀀스 길이 설정
mySequence.length = 120;
// X, Y 원점 설정
mySequence.xorigin = 100;
mySequence.yorigin = 200;
// 메시지 이벤트 키프레임 추가
var messageKeyframes = [];
array_push(messageKeyframes, new SequenceKeyframeStruct());
mySequence.messageEventKeyframes = messageKeyframes;
// 순간 이벤트 키프레임 추가
var momentKeyframes = [];
array_push(momentKeyframes, new SequenceKeyframeStruct());
mySequence.momentKeyframes = momentKeyframes;
// 트랙 추가
var tracks = [];
array_push(tracks, new SequenceTrackStruct());
mySequence.tracks = tracks;
// 시퀀스 속성 가져오기
var sequenceName = mySequence.name;
var sequenceLength = mySequence.length;
var sequenceVolume = mySequence.volume;
// 시퀀스 재생
sequence_play(mySequence);
// 시퀀스 수정
mySequence.playbackSpeed = 60; // 재생 속도 변경
mySequence.volume = 0.5; // 볼륨 변경
// 시퀀스 종료
sequence_stop(mySequence);