public void SetControlActive(bool isActive) { TankPlayerInputHandler handler = TankPlayerInputHandler.Instance(); if (isActive != isControlActive) //第一次点击 => 注册 { isControlActive = isActive; handler.Axis1VerticalInputEvent += Move; handler.Axis1HorizontalInputEvent += Rotate; handler.Axis2VerticalInputEvent += RotateGun; handler.Axis2HorizontalInputEvent += RotateTurret; handler.FireInputEvent += Fire; } else { isControlActive = !isActive; //再次点击 => 移除注册信息 handler.Axis1VerticalInputEvent -= Move; handler.Axis1HorizontalInputEvent -= Rotate; handler.Axis2VerticalInputEvent -= RotateGun; handler.Axis2HorizontalInputEvent -= RotateTurret; handler.FireInputEvent -= Fire; } }
public static TankPlayerInputHandler Instance() { _sInstance = FindObjectOfType <TankPlayerInputHandler>(); //保证整个场景只有一个 if (_sInstance == null) { GameObject newObj = new GameObject(name: "TankPlayerInputHandler"); _sInstance = newObj.AddComponent <TankPlayerInputHandler>(); } return(_sInstance); }
public void OnPointerClick(PointerEventData eventData) { TankPlayerInputHandler.Instance().TakeTankControl(this); }