-
PlayFab과 Unity 연동 (2) - 로그인, 회원가입, 비밀번호 찾기 기능 구현CS/졸업 프로젝트(Duk to Me) 2023. 9. 18. 02:28반응형
지난 포스트에 이어서 PlayFab과 Unity 연동을 해보자.
① PlayFabSDK 설치가 Unity Project에 되어있으므로, Window > PlayFab > Editor Extensions 를 클릭하면 나오는 창에서 지난번에 만든 PlayFab 계정 정보를 입력하여 로그인하기
② 로그인에 성공하면 나오는 화면으로 최신버전의 PlayFabSDK가 잘 설치되어 있는지 확인 가능 (최신버전이 아니라면 최신버전으로 다시 SDK 설치 필요) 여기서 SETTINGS > STUDIO > 'TutorialStudio'(지난번 PlayFab Web에서 생성한 Studio 이름) 을 클릭하면 밑에 지난번에 수정한 Game Title이 'TITLE ID' 칸에 나오는 것을 확인
③ 계정 생성을 위한 Method를 정의한 Code를 'LoginPagePlayfab' Script에 아래와 같이 추가하여 수정하기
using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; using PlayFab; using PlayFab.ClientModels; public class LoginPagePlayfab : MonoBehaviour { [Header("Login")] [SerializeField] private TMP_InputField EmailLoginInput; [SerializeField] private TMP_InputField PasswordLoginput; [SerializeField] private GameObject LoginPage; [Header("Register")] [SerializeField] private TMP_InputField UsernameRegisterInput; [SerializeField] private TMP_InputField EmailRegisterInput; [SerializeField] private TMP_InputField PasswordRegisterInput; [SerializeField] private GameObject RegisterPage; [Header("Recovery")] [SerializeField] private TMP_InputField EmailRecoveryInput; [SerializeField] private GameObject RecoveryPage; private void Start() { } private void Update() { } #region Button Functions public void RegisterUser() { // if statement if password is less than 6 message text = Too short password; var request = new RegisterPlayFabUserRequest { DisplayName = UsernameRegisterInput.text, Email = EmailRegisterInput.text, Password = PasswordRegisterInput.text, RequireBothUsernameAndEmail = false }; PlayFabClientAPI.RegisterPlayFabUser(request, OnRegisterSuccess, OnError); } private void OnError(PlayFabError Error) { Debug.Log(Error.GenerateErrorReport()); } private void OnRegisterSuccess(RegisterPlayFabUserResult Result) { OpenLoginPage(); } public void OpenLoginPage() { LoginPage.SetActive(true); RegisterPage.SetActive(false); RecoveryPage.SetActive(false); } public void OpenRegisterPage() { LoginPage.SetActive(false); RegisterPage.SetActive(true); RecoveryPage.SetActive(false); } public void OpenRecoveryPage() { LoginPage.SetActive(false); RegisterPage.SetActive(false); RecoveryPage.SetActive(true); } #endregion }
④ 'RegisterAreaHolder' UI의 'Register' Button의 'On Click()' > '+' 클릭하여 'LoginPagePlayfab' Script 가 적용되어 있는 Game Object인 'LoginSystem'을 가져와서 새로 추가한 Method인 'RegisterUser()'를 등록하기. 이로써 회원가입 기능 구현이 되었고 Project를 Play 하여 Username, Email, Password를 입력하여 계정을 생성하였을 때, PlayFab Web에서 Game Studio > Title > Players > Search 로 들어가면 확인 가능
⑤ 로그인 동작을 정의하는 새로운 Method를 추가하여 Script 수정하기
using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; using PlayFab; using PlayFab.ClientModels; using System; using UnityEngine.SceneManagement; public class LoginPagePlayfab : MonoBehaviour { [Header("Login")] [SerializeField] private TMP_InputField EmailLoginInput; [SerializeField] private TMP_InputField PasswordLoginput; [SerializeField] private GameObject LoginPage; [Header("Register")] [SerializeField] private TMP_InputField UsernameRegisterInput; [SerializeField] private TMP_InputField EmailRegisterInput; [SerializeField] private TMP_InputField PasswordRegisterInput; [SerializeField] private GameObject RegisterPage; [Header("Recovery")] [SerializeField] private TMP_InputField EmailRecoveryInput; [SerializeField] private GameObject RecoveryPage; private void Start() { } private void Update() { } #region Button Functions public void RegisterUser() { // if statement if password is less than 6 message text = Too short password; var request = new RegisterPlayFabUserRequest { DisplayName = UsernameRegisterInput.text, Email = EmailRegisterInput.text, Password = PasswordRegisterInput.text, RequireBothUsernameAndEmail = false }; PlayFabClientAPI.RegisterPlayFabUser(request, OnRegisterSuccess, OnError); } public void Login() { var request = new LoginWithEmailAddressRequest { Email = EmailLoginInput.text, Password = PasswordLoginput.text, }; PlayFabClientAPI.LoginWithEmailAddress(request, OnLoginSuccess, OnError); } private void OnLoginSuccess(LoginResult result) { SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1); } private void OnError(PlayFabError Error) { Debug.Log(Error.GenerateErrorReport()); } private void OnRegisterSuccess(RegisterPlayFabUserResult Result) { OpenLoginPage(); } public void OpenLoginPage() { LoginPage.SetActive(true); RegisterPage.SetActive(false); RecoveryPage.SetActive(false); } public void OpenRegisterPage() { LoginPage.SetActive(false); RegisterPage.SetActive(true); RecoveryPage.SetActive(false); } public void OpenRecoveryPage() { LoginPage.SetActive(false); RegisterPage.SetActive(false); RecoveryPage.SetActive(true); } #endregion }
⑥ 'Thegame'이라는 이름의 새로운 Game Scene을 생성하고, File > Build Settings > Add Open Scenes를 클릭하여 'Thegame' Scene을 'LoginScene_01' 밑에 추가하기
⑦ 'LoginAreaHolder' UI의 'LoginButton' Button의 'On Click()' > '+' 클릭하여 'LoginPagePlayfab' Script 가 적용되어 있는 Game Object인 'LoginSystem'을 가져와서 새로 추가한 Method인 'Login()'를 등록하기. 이로써 로그인 기능 구현이 되었고 Project를 Play 하여 로그인 성공시, Build Settings에서 설정한대로 다음 Scene인 'Thegame' Scene으로 넘어가는 것으로 확인 가능
⑧ 비밀번호 찾기 기능 동작을 정의하는 RecoverUser() Method를 추가하여 Script를 수정하기. TitleId는 각자 Window > PlayFab > Editor Extensions > SETTINGS > TITLE ID 의 괄호안에 있는 문자를 입력 (계정별로 다름)
using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; using PlayFab; using PlayFab.ClientModels; using System; using UnityEngine.SceneManagement; public class LoginPagePlayfab : MonoBehaviour { [Header("Login")] [SerializeField] private TMP_InputField EmailLoginInput; [SerializeField] private TMP_InputField PasswordLoginput; [SerializeField] private GameObject LoginPage; [Header("Register")] [SerializeField] private TMP_InputField UsernameRegisterInput; [SerializeField] private TMP_InputField EmailRegisterInput; [SerializeField] private TMP_InputField PasswordRegisterInput; [SerializeField] private GameObject RegisterPage; [Header("Recovery")] [SerializeField] private TMP_InputField EmailRecoveryInput; [SerializeField] private GameObject RecoveryPage; private void Start() { } private void Update() { } #region Button Functions public void RegisterUser() { // if statement if password is less than 6 message text = Too short password; var request = new RegisterPlayFabUserRequest { DisplayName = UsernameRegisterInput.text, Email = EmailRegisterInput.text, Password = PasswordRegisterInput.text, RequireBothUsernameAndEmail = false }; PlayFabClientAPI.RegisterPlayFabUser(request, OnRegisterSuccess, OnError); } public void Login() { var request = new LoginWithEmailAddressRequest { Email = EmailLoginInput.text, Password = PasswordLoginput.text, }; PlayFabClientAPI.LoginWithEmailAddress(request, OnLoginSuccess, OnError); } private void OnLoginSuccess(LoginResult result) { SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1); } public void RecoverUser() { var request = new SendAccountRecoveryEmailRequest { Email = EmailRecoveryInput.text, TitleId = "BEF62", }; PlayFabClientAPI.SendAccountRecoveryEmail(request, OnRecoverySuccess, OnErrorRecovery); } private void OnErrorRecovery(PlayFabError result) { } private void OnRecoverySuccess(SendAccountRecoveryEmailResult obj) { OpenLoginPage(); } private void OnError(PlayFabError Error) { Debug.Log(Error.GenerateErrorReport()); } private void OnRegisterSuccess(RegisterPlayFabUserResult Result) { OpenLoginPage(); } public void OpenLoginPage() { LoginPage.SetActive(true); RegisterPage.SetActive(false); RecoveryPage.SetActive(false); } public void OpenRegisterPage() { LoginPage.SetActive(false); RegisterPage.SetActive(true); RecoveryPage.SetActive(false); } public void OpenRecoveryPage() { LoginPage.SetActive(false); RegisterPage.SetActive(false); RecoveryPage.SetActive(true); } #endregion }
⑨ 'ResetPasswordAreaHolder' UI의 'ResetPasswordButton' Button의 'On Click()' > '+' 클릭하여 'LoginPagePlayfab' Script 가 적용되어 있는 Game Object인 'LoginSystem'을 가져와서 새로 추가한 Method인 'RecoverUser()'를 등록하기. 이로써 비밀번호 찾기 기능 구현이 되었고 Project를 Play 하여 비밀번호 찾기 UI로 가서 계정의 Email 정보를 입력하면 등록한 Email로 Reset된 비밀번호가 전송된 것으로 확인 가능
Reference
반응형'CS > 졸업 프로젝트(Duk to Me)' 카테고리의 다른 글
PlayFab과 Unity 연동 (4) - 게임 점수 Data 보내고 가져오기 (0) 2023.09.18 PlayFab과 Unity 연동 (3) - 닉네임 Data 보내고 가져오기 (0) 2023.09.18 PlayFab 설명및 Unity와의 연동 (1) - UI 만들기, 기초설정, PlayFab 계정만들기 (0) 2023.09.17 Unity에서 여러 Scene으로부터 점수를 합산하여 내는 점수체계 C# Script 코드 쓰기 (0) 2023.08.16 [이슈관리] Unity에서 Google Speech API Asset의 C# Script 고치기 (0) 2023.06.26