사용자 동의화면(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 로 캐스팅해서 오버라이딩 된 유니티 == 연산자를 쓰도록 하면 된다.

 

 

 

분명히 PlayFabSharedSettings 에 입력 제대로 했는데 에러가 뜨는경우 해결법

 

상단 메뉴 - Edit - Project settings - Editor - Enter Player mode Option을 끄고 컴파일 후 실행해본다.

 

뭔가가 리프레쉬가 되지 않아 생기는 문제로 보인다. 뭔가 원인을 알수없는 문제의 상당수가 플레이 모드 옵션에서 생기는것 같다. 

 

또 A Native Collection has not been disposed, resulting in a memory leak 에러도 플레이모드와 연관 있는게 아닌가 의심된다.

+ Recent posts