(에러1)Assets\UserIdManager.cs(24,28): error CS1503: Argument 1: cannot convert from ‘method group’ to ‘bool’
(에러2)Assets\UserIdManager.cs(94,21): error CS0019: Operator ‘==’ cannot be applied to operands of type ‘string’ and ‘int’
using UnityEngine;
using TMPro;
using UnityEngine.UI;
using BackEnd;
public class UserIdManager : MonoBehaviour
{
private const string UserIdKey = "UserId";
private const string PasswordKey = "Password";
private string userId;
private string password;
// TMP Input Field 및 Text 요소를 연결하기 위한 변수
public TMP_InputField userIdInputField;
public TMP_InputField passwordInputField;
public Button submitButton;
public TMP_Text resultText;
private bool isBackendInitialized = false;
void Start()
{
// 백엔드 서버 초기화
Backend.Initialize(BackendInitializeCallback);
}
void BackendInitializeCallback(BackendReturnObject backendCallback)
{
if (backendCallback.IsSuccess())
{
isBackendInitialized = true;
if (PlayerPrefs.HasKey(UserIdKey) && PlayerPrefs.HasKey(PasswordKey))
{
// 기존 유저 ID와 비밀번호 로드
userId = PlayerPrefs.GetString(UserIdKey);
password = PlayerPrefs.GetString(PasswordKey);
// 토큰 로그인을 시도합니다.
Backend.BMember.LoginWithTheBackendToken(bro =>
{
if (bro.IsSuccess())
{
resultText.text = $"{userId}님 자동 로그인되었습니다.";
}
else
{
// 토큰 로그인 실패 시, ID와 비밀번호를 통한 로그인 시도
CustomLogin(userId, password);
}
});
}
else
{
// 유저 ID 입력 UI 표시
ShowUserIdInput();
}
// 버튼 클릭 이벤트 설정
submitButton.onClick.AddListener(OnSubmitButtonClicked);
// Input Field 변화 이벤트 설정
userIdInputField.onValueChanged.AddListener(OnUserIdInputChanged);
}
else
{
Debug.LogError("Failed to initialize Backend: " + backendCallback.ToString());
}
}
void ShowUserIdInput()
{
if (userIdInputField != null && passwordInputField != null)
{
userIdInputField.gameObject.SetActive(true);
passwordInputField.gameObject.SetActive(true);
submitButton.gameObject.SetActive(true);
resultText.gameObject.SetActive(false);
}
}
void OnUserIdInputChanged(string newUserId)
{
if (!isBackendInitialized || userIdInputField == null)
{
return;
}
if (!string.IsNullOrEmpty(newUserId) && IsValidCustomId(newUserId))
{
// 입력된 유저 ID가 중복인지 확인
Backend.BMember.CustomSignUp(newUserId, "password", bro =>
{
if (bro.GetStatusCode() == 409) // Conflict 상태 코드, 이미 존재하는 ID
{
// 중복된 아이디
resultText.gameObject.SetActive(true);
resultText.text = "동일한 아이디가 존재합니다.";
submitButton.interactable = false;
}
else if (bro.IsSuccess())
{
// 중복되지 않는 아이디
resultText.gameObject.SetActive(false);
submitButton.interactable = true;
}
else
{
// 다른 오류 처리
resultText.gameObject.SetActive(true);
resultText.text = $"오류 발생: {bro.GetMessage()}";
submitButton.interactable = false;
}
});
}
else
{
resultText.gameObject.SetActive(false);
submitButton.interactable = false;
}
}
void OnSubmitButtonClicked()
{
userId = userIdInputField.text;
password = passwordInputField.text;
if (!string.IsNullOrEmpty(userId) && !string.IsNullOrEmpty(password) && IsValidCustomId(userId))
{
// 유저 ID와 비밀번호 저장
PlayerPrefs.SetString(UserIdKey, userId);
PlayerPrefs.SetString(PasswordKey, password);
PlayerPrefs.Save();
// 뒤끝 서버에 유저 정보 저장
Backend.BMember.CustomSignUp(userId, password, bro =>
{
if (bro.IsSuccess())
{
resultText.fontSize = 36; // 원하는 글자 크기로 설정
resultText.gameObject.SetActive(true);
resultText.text = "등록되었습니다.";
submitButton.interactable = false;
}
else
{
resultText.fontSize = 36;
resultText.gameObject.SetActive(true);
resultText.text = $"오류 발생: {bro.GetMessage()}";
submitButton.interactable = true;
}
});
}
}
void CustomLogin(string userId, string password)
{
Backend.BMember.CustomLogin(userId, password, bro =>
{
if (bro.IsSuccess())
{
resultText.text = $"{userId}님 환영합니다.";
}
else
{
resultText.text = $"로그인 실패: {bro.GetMessage()}";
ShowUserIdInput();
}
});
}
// CustomId 유효성 검사 함수
bool IsValidCustomId(string customId)
{
// customId 유효성 검사 로직 (예: 알파벳과 숫자로만 구성, 길이 제한 등)
if (string.IsNullOrEmpty(customId)) return false;
foreach (char c in customId)
{
if (!char.IsLetterOrDigit(c))
return false;
}
return customId.Length >= 3 && customId.Length <= 20; // 예시로 길이 제한 설정
}
// 필요에 따라 유저 로그아웃 기능도 추가할 수 있습니다.
public void LogoutUser()
{
PlayerPrefs.DeleteKey(UserIdKey);
PlayerPrefs.DeleteKey(PasswordKey);
ShowUserIdInput();
Debug.Log("User logged out");
}
}