2016-08-01 79 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,以节省电池寿命:我建议挖掘一些场景优化理论来正确解决您的问题。 –