> For the complete documentation index, see [llms.txt](/llms.txt)

# Account(GS2 UIKit for Unity)의 샘플

GS2 UIKit for Unity를 사용한 GS2-Account 기능 구현 샘플 소개



계정 생성과 로그인 처리를 실행합니다.

## 저장소

https://github.com/gs2io/gs2-uikit-for-unity-sample/tree/main/Account

## GS2-Deploy 템플릿

https://github.com/gs2io/gs2-uikit-for-unity-sample/blob/main/Account/initialize_account_template.yaml

## 프로젝트 내용

![img.png](img.png)

프로젝트를 열면 위와 같이 표시됩니다.

![img_2.png](img_2.png)

실행해 보면 처음에는 "Not Logged-in"이 표시됩니다.

![img_1.png](img_1.png)

잠시 기다리면 "Logged-in"이라는 표시로 바뀌고, 오른쪽 아래에 로그인 중인 사용자ID가 표시됩니다.

## 프로젝트 해설

![img_3.png](img_3.png)

씬의 계층 구조(hierarchy)를 확인하십시오.
GS2 로고가 표시된 Game Object에는 UI Kit의 컴포넌트가 할당되어 있습니다.

### Canvas/View

![img_4.png](img_4.png)

2개의 컴포넌트가 할당되어 있는 것을 확인할 수 있습니다.

**Gs2AccountLoggedInEnabler**

Add Component 메뉴에서는 다음 경로로 추가할 수 있습니다.
![img_5.png](img_5.png)

로그인 상태에 따라 GameObject를 활성화·비활성화할 수 있는 컴포넌트입니다.

Logged In에 체크하지 않고 Target에 GameObject를 지정하면,
미로그인 상태일 때 Target에 지정한 GameObject가 활성화되고, 로그인 시에는 비활성화됩니다.

반대로 Logged In에 체크를 해 두면
로그인 시 Target에 지정한 GameObject가 활성화되고, 미로그인 상태일 때는 비활성화됩니다.

이번 샘플에서는 미로그인 상태일 때 "NotFoggedIn"이 활성화되고, 로그인 시에는 "LoggedIn"이 활성화됩니다.

### Canvas/View/LoggedIn

![img_6.png](img_6.png)

여기서도 2개의 컴포넌트가 할당되어 있는 것을 확인할 수 있습니다.

**Gs2AccountOwnAccountContext**

이 GameObject보다 하위 요소에서 사용할 컨텍스트를 지정합니다.
Gs2AccountOwnAccountContext에서는 GS2-Account의 로그인 중인 계정에 관한 컨텍스트를 지정합니다.

"OwnAccount"라는 ScriptableObject가 지정되어 있습니다.

![img_8.png](img_8.png)
![img_7.png](img_7.png)

OwnAccount에서 지정한 ScriptableObject를 확인해 보면,
game-0001이라는 이름의 네임스페이스 내에서 자기 자신의 계정을 나타내는 ScriptableObject가 지정되어 있습니다.

**Gs2AccountOwnAccountFetcher**

Gs2AccountOwnAccountContext에서 지정된 계정의 정보를 취득하여 보유합니다.

### Canvas/View/LoggedIn/UserId

![img_9.png](img_9.png)

**Gs2AccountAccountLabel**

부모 노드의 Gs2AccountOwnAccountFetcher가 취득한 계정 정보를 Format에서 지정한 형식으로 출력합니다.

샘플에서는 {userId}를 지정하고 있으므로, 자기 자신의 사용자ID로 치환됩니다.
Add Format Parameter 버튼을 누르면 Format에 플레이스홀더를 추가할 수 있습니다.

정형화된 문자열은 OnUpdate(String) 이벤트에 전달됩니다.
이번에는 동일한 GameObject에 설정된 Text에 값을 반영하고 있습니다.

### Process/Gs2AutoLogin

로그인 처리를 실행하는 프리팹이 설정되어 있습니다.

![img_11.png](img_11.png)

이러한 API를 실행하는 프리팹은 컨텍스트 메뉴에서 추가할 수 있습니다.

![img_10.png](img_10.png)

**AutoLogin**

계정 생성·로그인에 사용하는 GS2-Account의 네임스페이스와, 로그인 처리에 사용하는 GS2-Key의 암호화 키를 지정하고 있습니다.

OnAutoLogin에서 로그인이 성공했을 때 호출되는 이벤트 핸들러를 설정하고 있습니다.
기본값으로는 자신의 GameObject를 비활성화하여, 로그인 처리가 중복으로 실행되지 않도록 설정되어 있습니다.

OnError에서 로그인에 실패했을 때 호출되는 이벤트 핸들러를 설정하고 있습니다.
여기서는 오류 내용을 출력하는 함수를 호출하고 있습니다.




