2017-10-31 1 views
2

어제부터 내 유니티 게임은 안드로이드 장치에서 30fps로 잠겼습니다. 그것은 150fps와 같았습니다 .. 전 v-sync를 비활성화했습니다. 어제에 추가 한 스크립트는 다음과 같습니다.유니티 모바일 장치 30fps 잠김

public static class SaveLoadProgress { 

public static void Save() 
{ 
    LevelManager levelManager = GameObject.Find ("GameManager").GetComponent<LevelManager>(); 
    BinaryFormatter bf = new BinaryFormatter(); 
    FileStream file = File.Create (Application.persistentDataPath + "/savedProgress.1912"); 
    bf.Serialize(file, levelManager.levelReached); 
    file.Close(); 
} 

public static void Load() 
{ 
    LevelManager levelManager = GameObject.Find ("GameManager").GetComponent<LevelManager>(); 
    if(File.Exists(Application.persistentDataPath + "/savedProgress.1912")) 
    { 
     BinaryFormatter bf = new BinaryFormatter(); 
     FileStream file = File.Open(Application.persistentDataPath + "/savedProgress.1912", FileMode.Open); 
     levelManager.levelReached = (int)bf.Deserialize(file); 
     file.Close(); 
    } 
} 
} 

아니요. 문제가 될 수 있습니다.

https://i.gyazo.com/33a4f6d2f87899568472b1f890bca1ec.png

내가 초당 30 프레임에서 잠금을 해제해야

:

void Awake() 
{ 
    Application.targetFrameRate = -1; 
    QualitySettings.vSyncCount = 0; 
} 

프로파일 러는이 보여줍니다 나는 GameManager이 추가?

+0

좋은 질문입니다. 축하해. – statosdotcom

답변

3

기본적으로 유니티는 현재 플랫폼에 따라 특정 값에 대해 fps를 잠급니다. Documentation에 따르면 Android의 기본값은 대부분의 Android 기기에서 사용되는 30입니다. 또한 그것은 :

기본값 targetFrameRate는 게임이 플랫폼의 기본 프레임 속도로 렌더링되어야한다는 것을 나타내는 -1입니다.

이 기사에서 말한 것처럼 모바일 용으로 30입니다.

또한 편집자로 게임을 실행하는 동안 최대한 많은 fps를 가질 수 있지만, 150 이상이 될 수 있지만 실제로는 60 (iPhone 및 일부 안드로이드의 경우 최대 값) 이상을 갖는 것이 좋습니다. 60fps 이상인 경우 장치의 디스플레이가 실제로 초당 60 프레임 이상을 렌더링 할 수 없기 때문에 실제로 차이를 볼 수는 없지만 배터리 및 CPU 리소스가 필요하며 모든 계산 (추가 60+ fps의 경우)은 쓸모가 없습니다 심지어 나쁘다.

Application.targetFrameRate = 60; 

을 또한 수직 동기화는 대부분 모바일에서 작동하지 않는 당신이 돈 때문에 ': 당신은 당신의 코드에서하고있는 것처럼

는 60 설정할 수 있습니다, 더 30보다 당신의 FPS를 만들려면 이 일로 귀찮게해야합니다.

+0

고마워, 나는 그걸 이미했다고 생각했지만 지금은 효과가있다. 며칠 전 fps가 모바일 장치에서도 150에 불과하다는 것이 이상합니다. –