pub const SCENE = union(enum) {
TITLE: title,
SELECT_GAME_MODE: select_game_mode,
};
pub var scene = SCENE.TITLE;
const tags = comptime std.meta.tags(SCENE);
inline for (tags.*) |t| {//모든 씬마다 업데이트 호출
std.meta.TagPayload(SCENE, t).update();
}
//title.update();
//select_game_mode.update();
위 코드와 같이 장면들의 각 타입을 기입해서 union을 만들어서 tags 함수로 해당 union 모든 태그를 가져온후 루프를 돌려서 그 태그의 해당하는 타입을 TagPayload로 가져와서 update를 각각 호출할 수 있습니다.
union의 태그 구성 갯수는 바뀔수 없으므로 comptime과 inline for을 씁니다.
'Zig' 카테고리의 다른 글
zig에서 C 문자열 다루기 (0) | 2024.10.10 |
---|---|
임의의 크기 행렬 구현 (0) | 2024.07.17 |