Gui*_*Poy 2 c# performance android input unity-game-engine
我已经构建了一个小应用程序,我在某些对象中使用 OnMouseDrag 和 OnMouseDown。我认为这将是最好的选择,因为这种方法在 Update 方法之外。然而,在编译应用程序时,Unity 表示“游戏脚本或其他自定义代码包含 OnMouseXXX 事件处理程序。此类处理程序的存在可能会影响手持设备的性能。”
那么...我应该使用什么来代替 OnMouseDrag 和 OnMouseDown?
我已经看到我可以使用 Input.GetMouseButtonDown。但是要做到这一点,我必须向每个具有 OnMouseDown 的对象添加一个 Update 方法。是不是比拥有 OnMouseDrag 更糟糕?
而且,为什么 OnMouseXXX 事件对手持设备的性能不利?
而且,为什么 OnMouse 事件对手持设备的性能不利?
它们对性能没有坏处。我没有遇到任何糟糕的性能,但您收到该错误的原因是因为 Unity 很可能在移动设备上做了更多工作以使其正常工作。它不是为此而设计的,但您不应该注意到仅通过使用它们就会对性能造成任何影响。
那么...我应该使用什么来代替 OnMouseDrag 和 OnMouseDown?
在OnMouseDrag和OnMouseDown功能是专门为桌面上所作的。是的,它们也适用于移动设备,但应避免使用。
应该避免使用它们,因为它们不适用于所有对象。例如,它们不适用于新的 UGUI 系统。
您应该使用OnBeginDragand OnEndDrag,这两者都需要您实现IBeginDragHandler和IEndDragHandler。
该OnBeginDrag和OnEndDrag功能将在所有GameObjects包括3D,2D和UI工作。对于 2D,您需要连接Physics2DRaycaster到相机。对于 3D,您必须连接PhysicsRaycaster到相机。
请参阅这篇文章了解如何让它在任何游戏对象上工作。
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");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
857 次 |
| 最近记录: |