而且,爲什麼OnMouse事件在手持設備 上的性能不好?
它們對性能不壞。我沒有遇到任何不好的表現,但是你得到這個錯誤的原因是因爲Unity很可能在移動設備上做了更多的工作以使它工作。這不是因爲這個,但你不應該只是通過使用它們注意到任何性能。
所以...我應該用什麼來代替OnMouseDrag和OnMouseDown?
OnMouseDrag
和OnMouseDown
功能是專門爲臺式機設計的。是的,他們也在移動設備上工作,但應該避免。
應避免使用它們,因爲它們不適用於所有對象。例如,它們不適用於新的UGUI系統。
您應該使用OnBeginDrag
和OnEndDrag
,這兩者都要求您實施IBeginDragHandler
和IEndDragHandler
。
OnBeginDrag
和OnEndDrag
函數可用於包括3D,2D和UI在內的所有GameObjects。對於2D,您需要將Physics2DRaycaster
附加到相機。對於3D,您必須將PhysicsRaycaster
附加到相機。
請參閱this發佈如何讓它在任何遊戲對象上工作。
using UnityEngine.EventSystems;
public class Dragger: MonoBehaviour,
IBeginDragHandler, IEndDragHandler
{
public void OnBeginDrag(PointerEventData eventData)
{
Debug.Log("Drag Begin");
}
public void OnDrag(PointerEventData eventData)
{
Debug.Log("Dragging");
}
public void OnEndDrag(PointerEventData eventData)
{
Debug.Log("Drag Ended");
}
}