122 lines
2.4 KiB
C#
122 lines
2.4 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class Device_Switch : Device_Base
|
|
{
|
|
[ReconnetAtrribute]
|
|
public bool isOpen;
|
|
|
|
/// <summary>
|
|
/// 是否启用位置移动
|
|
/// </summary>
|
|
public bool isMovePos;
|
|
/// <summary>
|
|
/// 是否启用角度旋转
|
|
/// </summary>
|
|
public bool isMoveAng;
|
|
/// <summary>
|
|
/// 打开时local位置
|
|
/// </summary>
|
|
public Vector3 OpenLocalPos;
|
|
/// <summary>
|
|
/// 打开时local角度
|
|
/// </summary>
|
|
public Vector3 OpenlcoalAng;
|
|
/// <summary>
|
|
/// 关闭时local位置和角度
|
|
/// </summary>
|
|
public Vector3 CloseLocalPos;
|
|
/// <summary>
|
|
/// 关闭时local角度
|
|
/// </summary>
|
|
|
|
public Vector3 CloselcoalAng;
|
|
|
|
/// <summary>
|
|
/// 操作开关事件
|
|
/// </summary>
|
|
private Action<bool> actionBack;
|
|
|
|
private Func<bool> checkAction;
|
|
|
|
/// <summary>
|
|
/// 添加开关操作回调
|
|
/// </summary>
|
|
/// <param name="actionBack"></param>
|
|
public void AddAction(Action<bool> actionBack)
|
|
{
|
|
this.actionBack = actionBack;
|
|
}
|
|
|
|
public void AddCheckAction(Func<bool> checkAction)
|
|
{
|
|
this.checkAction = checkAction;
|
|
}
|
|
|
|
protected override void OnMDown()
|
|
{
|
|
base.OnMDown();
|
|
if (checkAction==null || checkAction.Invoke())
|
|
{
|
|
MyClick();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 点击
|
|
/// </summary>
|
|
public void MyClick()
|
|
{
|
|
if ((triggerAction == null ? 0 : triggerAction.Invoke(triggerName, true)) == 0)
|
|
{
|
|
if (isOpen)
|
|
{
|
|
CloseState();
|
|
}
|
|
else
|
|
{
|
|
OpenState();
|
|
}
|
|
|
|
//调用自定义事件
|
|
if (actionBack != null)
|
|
{
|
|
actionBack.Invoke(isOpen);
|
|
}
|
|
|
|
CallScoreAction(isOpen);
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 开关打开状态
|
|
/// </summary>
|
|
public void OpenState()
|
|
{
|
|
isOpen = true;
|
|
if(isMoveAng)
|
|
transform.localEulerAngles = OpenlcoalAng;
|
|
|
|
if (isMovePos)
|
|
transform.localPosition = OpenLocalPos;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 开关关闭状态
|
|
/// </summary>
|
|
public void CloseState()
|
|
{
|
|
isOpen = false;
|
|
if (isMoveAng)
|
|
transform.localEulerAngles = CloselcoalAng;
|
|
|
|
if (isMovePos)
|
|
transform.localPosition = CloseLocalPos; ;
|
|
}
|
|
|
|
|
|
}
|