Xbox Live 사용자 사진 가져오기
이 문서에서는 xboxlive_sprite_add_from_gamerpicture
함수에 대해 설명합니다. 이 함수는 주어진 사용자 ID에 대한 게이머 사진을 비동기적으로 가져오는 기능을 제공합니다. 함수가 완료되면 Image Loaded
비동기 이벤트가 발생하여 작업이 끝났음을 알립니다. 이 이벤트는 내장 변수 async_load
에 DS 맵을 저장합니다. 이 맵에는 다음과 같은 정보가 포함됩니다:
키 | 설명 |
---|---|
filename | 요청한 파일의 전체 경로 |
id | 로드한 리소스의 ID |
status | 오류가 있을 경우 0보다 작은 값 반환 |
주의: 런타임 중에 스프라이트를 동적으로 로드할 때는 더 이상 필요하지 않을 경우 sprite_delete()
를 사용하여 반드시 제거해야 합니다. 그렇지 않으면 메모리 누수로 인해 게임이 느려지거나 결국 충돌할 수 있습니다.
문법
xboxlive_sprite_add_from_gamerpicture(user_id, imagesize, xorig, yorig);
매개변수 설명
매개변수 | 타입 | 설명 |
---|---|---|
user_id | 포인터 | 게이머 사진을 가져올 사용자 ID |
imagesize | 정수 | 반환할 스프라이트의 픽셀 크기 |
xorig | 정수 | 스프라이트의 원점 x 위치 |
yorig | 정수 | 스프라이트의 원점 y 위치 |
반환값
- 비동기 요청 ID
예제 코드
아래 코드는 로그인한 사용자들을 반복하여 그들의 게이머 데이터를 다양한 전역 배열에 저장하는 예제입니다.
var _a = 0;
var _num = xboxlive_get_user_count();
for (var i = 0; i < _num; ++i) {
var _uid = xboxlive_get_user(i);
if (_uid != pointer_null) {
global.UserName[_a] = xboxlive_gamedisplayname_for_user(_uid);
global.UserScore[_a] = xboxlive_gamerscore_for_user(_uid);
global.UserRep[_a] = xboxlive_reputation_for_user(_uid);
global.UserAvatar[_a] = xboxlive_sprite_add_from_gamerpicture(_uid, 256, 0, 0);
++_a;
}
}
활용 예제
- 사용자 아바타 로드 및 표시
- 로그인한 사용자들의 아바타를 게임 화면에 표시할 수 있습니다.
// 사용자 아바타를 화면에 표시하는 코드
for (var i = 0; i < global.UserAvatar.length; ++i) {
var avatar = global.UserAvatar[i];
draw_sprite(avatar, 0, 100 + (i * 50), 100); // y 위치를 조정하여 아바타를 나열
}
- 사용자 정보 업데이트
- 사용자가 게임 내에서 자신의 정보를 업데이트할 수 있도록 하는 기능을 추가할 수 있습니다.
// 사용자 정보를 업데이트하는 코드
if (user_info_updated) {
var _uid = xboxlive_get_current_user();
global.UserName[0] = xboxlive_gamedisplayname_for_user(_uid);
global.UserScore[0] = xboxlive_gamerscore_for_user(_uid);
global.UserRep[0] = xboxlive_reputation_for_user(_uid);
}
- 에러 처리
- 비동기 요청의 상태를 확인하고 에러를 처리하는 방법을 구현할 수 있습니다.
// 비동기 요청 상태 확인 및 에러 처리
if (async_load[? "status"] < 0) {
show_error("아바타 로드 실패: " + string(async_load[? "status"]), true);
}
이와 같은 방식으로 xboxlive_sprite_add_from_gamerpicture
함수를 활용하여 다양한 기능을 구현할 수 있습니다.