After updating from 2021.1 to 2021.2 using version from website (not hub) code below, in particular Enhanced touch bits have stopped working when app is built to device, It still works in game window when running in unity.
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.InputSystem.EnhancedTouch;
using Touch = UnityEngine.InputSystem.EnhancedTouch.Touch;
public class GameUiManager : MonoBehaviour
{
// Fields
[SerializeField] private GameObject movementStrip;
private Rect movementStripRect;
private float movementMaxValue;
private float movementMinValue;
// Lifecycle Methods
private void Start()
{
CreateMovementStripRect();
}
private void OnEnable()
{
EnhancedTouchSupport.Enable();
}
private void OnDisable()
{
EnhancedTouchSupport.Disable();
}
private void Update()
{
HandleMovementStripInteraction();
}
private void HandleMovementStripInteraction()
{
if (Touch.activeFingers.Count >= 1)
{
bool isActiveFinger = false;
float movePosition = 0;
foreach (Finger finger in Touch.activeFingers)
{
Vector2 fingerPosition = finger.screenPosition;
if (movementStripRect.Contains(fingerPosition))
{
isActiveFinger = true;
movePosition = fingerPosition.x;
break;
}
}
if (isActiveFinger)
{
HandlePlayerMovementEvents(movePosition);
}
}
}
private void HandlePlayerMovementEvents(float movePosition)
{
float normalizedPosition = Mathf.InverseLerp(movementMinValue, movementMaxValue, movePosition);
if (normalizedPosition <= 0.25 )
{
GameManager.Instance.SetPlayerPosition(PlayerPosition.Left);
} else if (normalizedPosition <= 0.75 )
{
GameManager.Instance.SetPlayerPosition(PlayerPosition.Middle);
} else if (normalizedPosition <= 1 )
{
GameManager.Instance.SetPlayerPosition(PlayerPosition.Right);
}
}
private void CreateMovementStripRect()
{
float scaleFactor = Screen.width / GetComponent<CanvasScaler>().referenceResolution.x;
Transform stripTransform = movementStrip.transform;
RectTransform stripRect = (RectTransform)stripTransform;
movementStripRect = new Rect(
stripTransform.position.x,
stripTransform.position.y,
stripRect.sizeDelta.x * scaleFactor,
stripRect.sizeDelta.y * scaleFactor
);
movementMaxValue = stripTransform.position.x + stripRect.sizeDelta.x * scaleFactor;
movementMinValue = stripTransform.position.x;
}
}