| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 | using System;using UnityEngine;using UnityEngine.EventSystems;namespace UnityStandardAssets.CrossPlatformInput{	public class AxisTouchButton : MonoBehaviour, IPointerDownHandler, IPointerUpHandler	{		// designed to work in a pair with another axis touch button		// (typically with one having -1 and one having 1 axisValues)		public string axisName = "Horizontal"; // The name of the axis		public float axisValue = 1; // The axis that the value has		public float responseSpeed = 3; // The speed at which the axis touch button responds		public float returnToCentreSpeed = 3; // The speed at which the button will return to its centre		AxisTouchButton m_PairedWith; // Which button this one is paired with		CrossPlatformInputManager.VirtualAxis m_Axis; // A reference to the virtual axis as it is in the cross platform input		void OnEnable()		{			if (!CrossPlatformInputManager.AxisExists(axisName))			{				// if the axis doesnt exist create a new one in cross platform input				m_Axis = new CrossPlatformInputManager.VirtualAxis(axisName);				CrossPlatformInputManager.RegisterVirtualAxis(m_Axis);			}			else			{				m_Axis = CrossPlatformInputManager.VirtualAxisReference(axisName);			}			FindPairedButton();		}		void FindPairedButton()		{			// find the other button witch which this button should be paired			// (it should have the same axisName)			var otherAxisButtons = FindObjectsOfType(typeof(AxisTouchButton)) as AxisTouchButton[];			if (otherAxisButtons != null)			{				for (int i = 0; i < otherAxisButtons.Length; i++)				{					if (otherAxisButtons[i].axisName == axisName && otherAxisButtons[i] != this)					{						m_PairedWith = otherAxisButtons[i];					}				}			}		}		void OnDisable()		{			// The object is disabled so remove it from the cross platform input system			m_Axis.Remove();		}		public void OnPointerDown(PointerEventData data)		{			if (m_PairedWith == null)			{				FindPairedButton();			}			// update the axis and record that the button has been pressed this frame			m_Axis.Update(Mathf.MoveTowards(m_Axis.GetValue, axisValue, responseSpeed * Time.deltaTime));		}		public void OnPointerUp(PointerEventData data)		{			m_Axis.Update(Mathf.MoveTowards(m_Axis.GetValue, 0, responseSpeed * Time.deltaTime));		}	}}
 |