728x90

에러문
'Task<DependencyStatus>' does not contain a definition for 'ContinueWithOnMainThread' and no accessible extension method 'ContinueWithOnMainThread' accepting a first argument of type 'Task<DependencyStatus>' could be found (are you missing a using directive or an assembly reference?)

해결: 스크립트에 아래 추가
using Firebase.Extensions;

728x90

문제: Destory를 못찾는다.

해결:
1. 스크립트 클래스명 옆에 :MonoBehaviour 있는지 확인.
2. using UnityEngine

728x90
728x90

유니티에 안드로이드 핸드폰 꽂아서 실행하려다 이런 에러가 뜨는 경우가 있다. 

계속 잘 하고 있다가 안되는 경우에도 이유는 몇가지 없다. 

1. 디버깅모드가 풀렸다.

2. 개발자 권한 확인하기.

 

설정 > 핸드폰 정보 > 소프트웨어 정보 > 빌드 번호 6회? 연속으로 누르기.
이렇게 하면 개발자 옵션이 열린다. 설정 메인 화면으로 다시 가보면 맨 아래에 개발자 옵션 버튼이 생긴걸 볼 수 있다.
아래 디버깅> USB 디버깅 을 활성화 한다.

728x90

문제 ) 패키지매니저에서 인앱결제를 인스톨 하고 유니티 대시보드에서 프로젝트도 생성했다. 

근데 계속 이렇게 뜨는데, 

 

해결 ) 로그아웃 / 로그인 

728x90

Edit > Project Settings > Other Settings > Minimum API level 을 올려보자. 

나는 android 8.0으로 올렸더니 제대로 빌드가 됐다.

 

728x90
using Firebase;
using Firebase.Extensions;
using UnityEngine;
using Firebase.Auth;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class FirebaseManager : MonoBehaviour
{
    FirebaseAuth auth;
    public Toggle autoLoginToggle;

    void Start()
    {
        FirebaseInit();
    }

    void FirebaseInit()
    {
        FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task =>
        {
            FirebaseApp app = FirebaseApp.DefaultInstance;
            auth = FirebaseAuth.DefaultInstance;
            Debug.Log($"초기화함");

            CheckAutoLogin();
        });
    }

    // 자동 로그인 확인
    void CheckAutoLogin()
    {
        string autoLoginYn = PlayerPrefs.GetString("autoLoginYn");

        // 저장된 UID가 있고, 자동로그인 체크했을때
        if (!string.IsNullOrEmpty(autoLoginYn) && autoLoginYn == "Y")
        {
            Debug.Log($"자동로그인 시도");
            PerformAnonymousLogin();
        }
    }

    public void PerformAnonymousLogin()
    {
        auth.SignInAnonymouslyAsync().ContinueWithOnMainThread(task =>
        {
            if (task.IsCompleted && !task.IsFaulted && !task.IsCanceled)
            {
                AuthResult authResult = task.Result;
                FirebaseUser user = authResult.User;

                bool toggleValue = autoLoginToggle.isOn;
                Debug.Log("익명 로그인 성공!");
                Debug.Log("사용자 UID: " + user.UserId);
                Debug.Log("Toggle의 현재 값: " + toggleValue);

                if(toggleValue){
                    PlayerPrefs.SetString("autoLoginYn","Y");
                    PlayerPrefs.SetString("userID", user.UserId);
                }else{
                    PlayerPrefs.SetString("autoLoginYn","N");
                }
                SceneManager.LoadScene("HomeScene");
            }
            else
            {
                Debug.LogError("익명 로그인 실패: " + task.Exception);
            }
        });
    }

}​
728x90

Mac 기준

문제: 처음 프로젝트를 만들때 임의로 ui를 배치해 놓는데, 샘플로 만든 오브젝트를 복사 붙여넣기를 하면 위치가 복사한 곳으로 들어간다. 원하는 결과: 복사한 컴포넌트가 부모 컴포넌트의 가운데로 들어갔으면 좋겠다.

해결:
1. 복사할 컴포넌트를 n개 선택한 후, cmd + D 로 해당 위치에 복붙한다
2. 복사한 컴포넌트를 원하는 곳으로 드래그 드랍으로 이동 시킨다.
3. 이동시킨 컴포넌트를 선택 후 inspector창에서 앵커 프리셋에서 Alt를 누른후 원하는 아무거나 누른다.

파란 점은 캡쳐시 shift를 눌러서 나오는 것.

4. 이동된 컴포넌트의 위치를 수정한다.

-------------

결과: 내가 원하는건 복사한 걸 부모 쪽으로 이동하기만 하면 됐기 때문에 이정도면 해결.

+ Recent posts