Google play console에서 google play games service 설정 중, google cloud를 이용한 OAuth 사용자 동의화면 구성을 했음에도 플레이 콘솔 단계가 안넘어가는 경우의 해결책.

 

 

 

구글계정 여러개 로그인 돼있는 경우, 구글 콘솔 개발자 계정만 로그인하고 나머진 로그아웃해라. (크롬에서도)
구글 콘솔에서 개발자 계정 로그인된 경우에도 구글 클라우드 넘어가면서 메인계정으로 바뀌어서 제대로 진행이 안되기 때문이다.

 

타 계정 로그아웃 후 진행하면 아래스샷의 네모를 누르면 자동으로 동의화면 OAuth 가 생성되고 순조롭게 진행된다.

구글의 계정전환이 문제였다.

 

 

 

이후 Refresh(새로고침) 누르면 해결.

 

 

구글플레이게임즈 전반적인 인증 및 세팅 방법은 이 영상을 참고하자

 

https://www.youtube.com/watch?v=0AtXxdvdKcQ 

 

[GPGS 세팅할때 도움되는 참고 링크]

https://developer.thebackend.io/unity3d/guide/federation/gpgs/

https://github.com/playgameservices/play-games-plugin-for-unity

 

사용자 동의화면(OAuth consent screen) - Scope 설정할때 위의 것들이 안뜨는 경우 해결책이다.

 

1) Enable API & services 로 들어간다음

2) 상단에 +ENABEL API AND SERVICES 클릭 후, 

3) 아래쪽에, 구글 플레이 게임즈 누르고 활성화 하면,

4) OAuth consent screen 설정(edit) 다시 들어가서 scope 에 뜬다.

 

 

 

 IEnumerator checkInternetConnection(Action<bool> action){
     WWW www = new WWW("http://google.com");
     yield return www;
     if (www.error != null) {
         action (false);
     } else {
         action (true);
     }
 } 
 void Start(){
     StartCoroutine(checkInternetConnection((isConnected)=>{
         // handle connection status here
     }));
 }

https://answers.unity.com/questions/567497/how-to-100-check-internet-availability.html?childToView=744803#answer-744803

스크립트 파일은 꼭 유니티 에디터 안에서만 이동시켜야한다.

윈도우 탐색기나 비주얼 스튜디오 등 외부에서 스크립트 파일을 이동하는 경우 유니티 내부의 연결구조가 끊어져 missing script 가 뜨게된다. 

이때 해당 스크립트 붙은 오브젝트, 프리팹을 찾아 일일이 다시 연결해야하는데 상당히 번거롭다.

꼭, 유니티 안에서만 스크립트 파일을 이동시키자

 

 

Interface 가 붙은 gameObject를 널체크할때 항상 true가 리턴되는 문제가 있다.

유니티 gameObject는 Destroy 되면 실제 null이 아닌 fake null 을 넣기때문에, null체크시 항상 유니티Object의 오버라이딩 된 == 를 사용해야 한다.

그러나 인터페이스로 참조된 gameObject는 fake null이 들어갔지만 연산자 == 를 c# 꺼로 사용해서 항상 true가 나오는 것

 

아래 코드를보자. (작동하는 코드는 아니고 개념만 보는용도)

 

public interface Unit
{
}

public class Monster : Monobehavior, Unit
{
}


void Start()
{
	var monster = Instanciate(monsterPrefab);
    Unit unit = (Unit)monster;
    
    Destroy(monster.gameObject); // 여기서 fake null이 들어감

	if(unit == null){ // 항상 true. c#의 == 연산자 사용
    	 
    }
    
    if((UnityEngine.Object)unit == null){ // 올바른 null 체크법. 유니티 Object의 오버라이딩된 == 연산자 사용
    	
    }
}

 

UnityEngine.Object 로 캐스팅해서 오버라이딩 된 유니티 == 연산자를 쓰도록 하면 된다.

 

 

+ Recent posts