273 lines
5.7 KiB
C#
273 lines
5.7 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.Events;
|
|
using UnityEngine.UI;
|
|
using DG.Tweening;
|
|
using RenderHeads.Media.AVProVideo;
|
|
using ZXK.BYSS;
|
|
using UnityEngine.EventSystems;
|
|
|
|
public class AvproVideoStep : MonoBehaviour, IPointerClickHandler
|
|
{
|
|
//-1.是否交互
|
|
[Header("是否交互")]
|
|
public bool Isinteraction;
|
|
//是否播放音频
|
|
[Header("是否播放音频")]
|
|
public bool IsPlayAudio;
|
|
[Header("音频对应的索引号")]
|
|
public int AudioClipIndex;
|
|
//0.视频地址,一个视频一个地址
|
|
[Header("一个视频一个地址")]
|
|
public string AvproVideoPath;
|
|
// public MediaPlayer AvproVideoMedia;
|
|
//1.下拉框,按钮
|
|
[Header("下拉框,按钮")]
|
|
public BtnType btnType;
|
|
//2.双击 ,单击
|
|
[Header("双击 ,单击")]
|
|
public ClickType clickType;
|
|
//3.事件(支持按钮是否点击,下拉框是否正确);
|
|
private UnityEvent FinishEvent;
|
|
[Header("显示的提示文本")]
|
|
public string TextStr;
|
|
[Header("下拉框,默认显示")]
|
|
public int DefaultIndex;
|
|
[Header("下拉框,正确答案")]
|
|
public int RightIndex;
|
|
|
|
|
|
|
|
[ReadOnly]
|
|
public GameObject ShouZhiObj;
|
|
[ReadOnly]
|
|
public Button Btn;
|
|
[ReadOnly]
|
|
public Dropdown Ddown;
|
|
|
|
|
|
/// <summary>
|
|
/// 外部调用隐藏
|
|
/// </summary>
|
|
public void OnHide()
|
|
{
|
|
|
|
|
|
//清除事件
|
|
if (Btn!=null)
|
|
{
|
|
seq?.Kill(); seq = null;
|
|
Btn.onClick.RemoveAllListeners();
|
|
Btn.gameObject.SetActive(false);
|
|
}
|
|
if (ShouZhiObj!=null)
|
|
{
|
|
seq?.Kill(); seq = null;
|
|
Btn.onClick.RemoveAllListeners();
|
|
Btn.gameObject.SetActive(false);
|
|
ShouZhiObj.gameObject.SetActive(false);
|
|
}
|
|
if (Ddown!=null)
|
|
{
|
|
Ddown.gameObject.SetActive(false);
|
|
}
|
|
|
|
}
|
|
//private string FloderPath;
|
|
|
|
|
|
|
|
///组件初始化
|
|
public void OnInitd()
|
|
{
|
|
|
|
//是否可以交互
|
|
if (Isinteraction)
|
|
{
|
|
|
|
|
|
//判断按钮类型
|
|
switch (btnType)
|
|
{
|
|
case BtnType.btn:
|
|
|
|
|
|
Btn = transform.GetComponent<Button>();
|
|
Btn.gameObject.SetActive(true);
|
|
|
|
Btn.onClick.RemoveAllListeners();
|
|
|
|
|
|
//判断交互方式
|
|
|
|
|
|
|
|
break;
|
|
case BtnType.dropDown:
|
|
Ddown = transform.GetComponent<Dropdown>();
|
|
//初始参数设置
|
|
Ddown.gameObject.SetActive(true);
|
|
Ddown.value = DefaultIndex;
|
|
|
|
|
|
Ddown.onValueChanged.AddListener(
|
|
(int index) => DowpBack(index)
|
|
|
|
|
|
|
|
) ;
|
|
|
|
break;
|
|
|
|
case BtnType.none:
|
|
|
|
//不做任何操作
|
|
|
|
|
|
break;
|
|
case BtnType.shouzhi:
|
|
|
|
|
|
ShouZhiObj = transform.GetChild(0).gameObject;
|
|
Btn = transform.GetComponent<Button>();
|
|
ShouZhiObj.gameObject.SetActive(true);
|
|
|
|
Btn.gameObject.SetActive(true);
|
|
|
|
|
|
|
|
break;
|
|
|
|
}
|
|
//不同类型不同动画。方式
|
|
if (Btn!=null)
|
|
{
|
|
seq = OnBtnShow();
|
|
seq.Play().SetLoops(-1);
|
|
|
|
}
|
|
if (ShouZhiObj!=null)
|
|
{
|
|
seq = OnShouZhiShow();
|
|
seq.Play().SetLoops(-1);
|
|
}else
|
|
if (Ddown!=null)
|
|
{
|
|
Ddown.gameObject.SetActive(true);
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
//单视频播放,直接发送结果
|
|
CallBackController();
|
|
}
|
|
}
|
|
|
|
Sequence seq;
|
|
///显示按钮动画
|
|
public Sequence OnBtnShow()
|
|
{
|
|
|
|
var _seq = DOTween.Sequence();
|
|
|
|
var v = Btn.gameObject.GetComponent<Image>().DOFade(0,0.3f);
|
|
|
|
_seq.Insert(0, v);
|
|
v = Btn.gameObject.GetComponent<Image>().DOFade(1, 0.3f);
|
|
_seq.Insert(0.5f, v);
|
|
|
|
|
|
return _seq;
|
|
}
|
|
|
|
//显示手指动画
|
|
public Sequence OnShouZhiShow()
|
|
{
|
|
|
|
var _seq = DOTween.Sequence();
|
|
|
|
var v = ShouZhiObj.gameObject.GetComponent<Image>().DOFade(0, 0.3f);
|
|
_seq.Insert(0, v);
|
|
v = Btn.gameObject.GetComponent<Image>().DOFade(0, 0.3f);
|
|
_seq.Insert(0, v);
|
|
v = Btn.gameObject.GetComponent<Image>().DOFade(1, 0.3f);
|
|
_seq.Insert(0.5f, v);
|
|
v = ShouZhiObj.gameObject.GetComponent<Image>().DOFade(1, 0.3f);
|
|
_seq.Insert(0.5f, v);
|
|
|
|
|
|
return _seq;
|
|
}
|
|
|
|
|
|
///直接返回给管理器结果的方法
|
|
public void CallBackController() {
|
|
|
|
|
|
Debug.Log("操作完成");
|
|
|
|
AvproVideoController.Instance.GetStepFuction(this);
|
|
|
|
|
|
}
|
|
|
|
//dropDown返回方法
|
|
|
|
public void DowpBack(int index)
|
|
{
|
|
if (index==RightIndex)
|
|
{
|
|
Debug.Log("操作完成");
|
|
AvproVideoController.Instance.GetStepFuction(this);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
public void OnPointerClick(PointerEventData eventData)
|
|
{
|
|
if (btnType== BtnType.btn)
|
|
{
|
|
int clickCount = eventData.clickCount;
|
|
switch (clickType)
|
|
{
|
|
case ClickType.once:
|
|
|
|
if (clickCount == 1)
|
|
OnSingleClick();
|
|
break;
|
|
case ClickType.two:
|
|
|
|
if (clickCount == 2)
|
|
OnDoubleClick();
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
void OnSingleClick()
|
|
{
|
|
CallBackController();
|
|
}
|
|
|
|
void OnDoubleClick()
|
|
{
|
|
|
|
CallBackController();
|
|
}
|
|
|
|
|
|
}
|