2023. 11. 16. 15:12ㆍ언어/유니티
- 개요
뒤끝서버에서 제공하는 파일을 차트에 다 적용시키고
하면 이 화면 나옴 약관 하고 아이디 만들면 그뒤로 부터는 데이터가 남아서
자동 로그인됨
LoginSceneManager 코드
touchStartButton 은 화면 전체에 안보이게 적용해놈
LoginButtonGroup 은 로그인 버튼 3개 그룹을 뜻함
코드내용중
- 키워드 : 싱글톤 , 인스턴스
public static LoginSceneManager Instance {
get {
return _instance;
}
}
싱글톤 패턴이다. 이 싱글톤 패턴을 이용하면 어디서든 인스턴스를 이용할 수있게된다.
이메서드의 속성을 어디서든 쓸 수 있게 만들어 준다.
- 키워드 : 로그인 패널 반환
public Canvas GetLoginUICanvas() {
return _loginUICanvas;
}
로그인 UI의 캔버스를 반환해준다 예를들어 닉네임이 없거나 커스텀 로그인을 했을때
GetLoginUICanvas(); 코드를 넣어준다고 보면된다. 그러면 다시 로그인 해야되니까
오류가 나지 않는다.
- 키워드 : 경로 프리팹 찾기 , 싱글톤
void Awake() {
if (_instance == null) {
_instance = this;
}
// StaticManager가 없을 경우 새로 생성
if (FindObjectOfType(typeof(StaticManager)) == null) {
var obj = Resources.Load<GameObject>("Prefabs/StaticManager");
Instantiate(obj);
}
}
앞서 말했던것처럼 싱글톤 패턴으로 위에 패턴을 썻다면 전역 접근을 가능하게 해주기 위해 적어야됨
- FindObjectOfType(typeof(staticManager)) ==null 게인씬에서 staticManager 이라는 오브젝트가 없다면
- 경로에 있는 게임 오브젝트 프리팹(prefab)을 로드(load)하라는 명령
- Instantiate() 복사해서 불러오기
만약 게임 씬에 StaticManager 오브젝트가 없다면,
Prefabs/StaticManager 프리팹을 메모리에 불러와서 게임 씬에 새로 생성하라"
- 키워드 : start
void Start() {
_loginButtonGroup.SetActive(false); // 로그인 버튼 비활성화
SetTouchStartButton(); // 버튼 비활성화
}
로그인 버튼 비활성화는 처음에 버튼없다가 터치하면 생기는거 할려고한거
시작 버튼도 비활성화 되어있다.
( 이말은 클릭시 다음으로 넘어가는 버튼을 말하는거)
버튼 비활성화 이거는 로그인 되어있을때 자동로그인
- 키워드 : 자동 로그인 호출 및 속성
// 터치하여 시작 버튼 활성화
// 터치 시, 해당 UI는 사라지며 자동 로그인 함수를 호출한다.
private void SetTouchStartButton() {
_touchStartButton.GetComponent<Button>().onClick.AddListener(() => {
Destroy(_touchStartButton);
_touchStartButton = null;
LoginWithBackendToken();
});
}
// 시작 버튼 클릭시 사리진다. 그리고 로그인 함수 불러옴
결국 자동 로그인을 만든거
- 키워드 : 자동 로그인 기능 및 오류탐지
private void LoginWithBackendToken() {
SendQueue.Enqueue(Backend.BMember.LoginWithTheBackendToken, callback => {
Debug.Log($"Backend.BMember.LoginWithTheBackendToken : {callback}");
if (callback.IsSuccess()) {
// 닉네임이 없을 경우
if (string.IsNullOrEmpty(Backend.UserNickName)) {
StaticManager.UI.OpenUI<LoginUI_Nickname>("Prefabs/LoginScene/UI", GetLoginUICanvas().transform);
}
else {
GoNextScene();
}
}
else {
SetButton();
}
});
}
GetLoginUICanvas().transform: 이 부분은 닉네임 설정 UI가 위치해야 하는 부모 오브젝트의 Transform을 가져옵니다.
UI 요소는 부모 오브젝트의 Transform 위치에 따라 위치하게 되므로, 이를 통해 UI가 표시되어야 할 위치를 정할 수 있습니다.
따라서, 이 코드는 사용자의 닉네임이 설정되어 있지 않다면, Prefabs/LoginScene/UI 경로의 닉네임 설정 UI를 GetLoginUICanvas().transform의 위치에 열라는 의미를 가집니다.
- 키워드 : 로그인 버튼 , 게스트 로그인 , 구글 로그인
// 로그인 버튼 씬에서 연결하기
private void SetButton() {
if (_loginButtonGroup.activeSelf)
{
return;
}
_loginButtonGroup.SetActive(true);
Button[] buttons = _loginButtonGroup.GetComponentsInChildren<Button>();
for (int i = 0; i < buttons.Length; i++) {
buttons[i].onClick.RemoveAllListeners();
}
buttons[0].onClick.AddListener(FederationLogin);
buttons[1].onClick.AddListener(CustomLogin);
buttons[2].onClick.AddListener(GuestLogin);
// 페데레이션 로그인 기능 미구현
buttons[0].gameObject.SetActive(false);
}
-그룹 버튼이 활성화 되어있다면 그대로 리턴해줌 ( 확인하는거 )
-그룹 버튼 활성화 해주고
- GetComponentsInChildren<T>() 메서드는 호출한 게임 오브젝트와 그 자식 오브젝트들 중에서 지정한 타입 T의 컴포넌트를 모두 찾아 배열로 반환하는 함수입니다.
결국 그룹버튼 전체 버튼
들을 찾아서 배열로변환
-변환된거 for문으로 돌림
- for문안에
이 코드에서는 모든 리스너를 제거한 후, 새로운 리스너를 추가함으로써 버튼의 기능을 재설정하는 것으로 보입니다.
이해가 잘안되지만 그렇다고 한다.
- 키워드: 씬 이동
public void GoNextScene() {
StaticManager.Instance.ChangeScene("LoadingScene");
}
이건 staticManager에 있는 씬 체인지 코드를 불러오는것이다.
- 키워드: 정책 , 커스텀 로그인 , 구글로그인
private void GetPolicy() {
StaticManager.UI.OpenUI<LoginUI_Policy>("Prefabs/LoginScene/UI", GetLoginUICanvas().transform);
}
말그대로 저 ui 불러오고
이용약관 UI를 포함하는 부모 오브젝트의 위치 정보를 가져오는 메서드입니다.
이하 동일
private void CustomLogin() {
StaticManager.UI.OpenUI<LoginUI_CustomLogin>("Prefabs/LoginScene/UI", GetLoginUICanvas().transform);
}
private void FederationLogin() {
}
- 키워드: 로그인 함수 처리
// 로그인 함수 후 처리 함수
private void AuthorizeProcess(BackendReturnObject callback) {
Debug.Log($"Backend.BMember.AuthorizeProcess : {callback}");
// 에러가 발생할 경우 리턴
// 로그인 버튼 활성화
if (callback.IsSuccess() == false) {
SetButton();
return;
}
// 새로 가입인 경우에는 statusCode가 201, 기존 로그인일 경우에는 200이 리턴된다.
if (callback.GetStatusCode() == "201") {
GetPolicy();
}
else {
GoNextScene();
}
}
로그인 에러 발생시 로그인 버튼을 활성화 시킨다.
처음 가입할경우 정책 ui를 뜨게만들고
아닌경우 씬이동
결과 적으로 로그인 처음할때만 정책 ui뜨게 만드는것 또한 오류가 날떄 버튼 다시 활성화해서 로그인 유도
//2023년11월16일 15시12분
'언어 > 유니티' 카테고리의 다른 글
3. 에러 코드 공부 AlertUI (0) | 2023.11.22 |
---|---|
2. 에러 프리팹 관리 스크립트StaticManager ,UIManager (0) | 2023.11.17 |
6. 뒤끝 서버공부 ( 마지막 ) (0) | 2023.11.16 |
5. 뒤끝 서버 베이스 공부2 (0) | 2023.11.14 |
4. 뒤끝 서버 베이스 공부 (0) | 2023.11.13 |