2016-08-01 80 views
0

我的腳本在Android上運行得非常好,並且不會減慢速度,但是當我嘗試在IoS上使用它時,它會變得非常好,有時它會滯後並且移動球員1英寸或更少,我不知道如何解決它。 FPS不下降,它保持穩定在60fps。如何避免在iOS中使用Unity MovePlayerOnYAxis產生延遲?

void MovePlayerOnYAxis() 
    { 

     foreach (Touch touch in Input.touches) 
     { 
      Vector3 newPosition = transform.position; 
      newPosition.y += Mathf.Clamp(touch.deltaPosition.y * speed, MIN_SPEED, MAX_SPEED) * Time.deltaTime; 
      transform.position = newPosition; 

     } 
    } 

回答

1

從上下文中提取的這段代碼太少,無法提供實際答案,因此在這裏我的意見將有助於您更好地進行調查。

在我看來,延遲與操作系統處理觸摸幾乎沒有關係,這很可能是與您在每幀中執行的其他操作有關的問題。 Android和iOS管理線程,渲染和內存的方式非常不同,所以提到60FPS這個簡單的事實讓我認爲你正在碰到某種競爭條件:移動設備上的最佳幀速率爲30,所以我建議啓動調查首先限制幀速率將以下在腳本中的一個:

void Awake() { 
     Application.targetFrameRate = 30; 
    } 

這將留下足夠的計算能力,以發動機和執行其他任務的操作系統,因此它在你的調查一個很好的起點。

+0

@Giuseppe_De_Francesco我已經使用targetframerate = 60,我有很多移動物體,所以如果我使用30fps它滯後,但如果60fps播放器有時會出現毛刺和移動緩慢,但一切都很好 –

+1

@PeterisUlmanis解釋它,然後,你面臨着資源管理賽車的狀況。另請注意,60FPS會使設備電池相當快速...這不是一個好習慣。有很多技術在屏幕上發生很多事情,而運行速度甚至低於30FPS,以節省電池壽命:我建議挖掘一些場景優化理論來正確解決您的問題。 –