using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
using DG.Tweening;
|
|
public enum GuideBoxType
|
{
|
None,
|
//Box,
|
Fire,
|
Wood,
|
Water
|
}
|
public class GuideBox : MonoBehaviour
|
{
|
Button bgBtn;//背景按钮
|
private GuideBoxType myType;
|
|
GameObject srImage;
|
GameObject infoImage;
|
|
GameObject firePS;
|
GameObject woodPS;
|
GameObject waterPS;
|
|
GameObject firePanel;
|
GameObject woodPanel;
|
GameObject waterPanel;
|
|
|
GameObject tmpPS = null;
|
GameObject tmpObj = null;
|
|
Text infoTxt;
|
|
Action callBack;
|
|
GameObject images;
|
Transform btnImageTS;
|
|
// Start is called before the first frame update
|
void Awake()
|
{
|
bgBtn = transform.Find("BackGround").GetComponent<Button>();
|
bgBtn.onClick.AddListener(OnClickBtn);
|
|
images = transform.Find("Images").gameObject;
|
|
srImage = transform.Find("SRImage").gameObject;
|
|
firePS = transform.Find("Effect_UI_ChouKa_Huo").gameObject;
|
woodPS = transform.Find("Effect_UI_ChouKa_Mu").gameObject;
|
waterPS = transform.Find("Effect_UI_ChouKa_Shui").gameObject;
|
|
firePanel = transform.Find("Fire").gameObject;
|
woodPanel = transform.Find("Wood").gameObject;
|
waterPanel = transform.Find("Water").gameObject;
|
|
|
infoImage = transform.Find("InfoTxt").gameObject;
|
infoTxt = transform.Find("InfoTxt/Text").GetComponent<Text>();
|
|
myType = GuideBoxType.None;
|
|
btnImageTS = transform.Find("BtnImage");
|
|
gameObject.SetActive(false);
|
}
|
|
public void ChangeType(GuideBoxType type, Action ac)
|
{
|
if (!gameObject.activeSelf)
|
{
|
gameObject.SetActive(true);
|
}
|
|
callBack = ac;
|
srImage.SetActive(false);
|
infoImage.SetActive(false);
|
if (type != myType)
|
{
|
myType = type;
|
|
bgBtn.interactable = false;
|
if (myType == GuideBoxType.Fire)
|
{
|
Fire();
|
}
|
else if (myType == GuideBoxType.Wood)
|
{
|
Wood();
|
}
|
else if (myType == GuideBoxType.Water)
|
{
|
Water();
|
}
|
AudioSourceManager.Ins.Play(AudioEnum.GuideOpenBox);
|
}
|
}
|
|
private void Fire()
|
{
|
images.SetActive(true);
|
tmpPS = firePS;
|
tmpPS.SetActive(true);
|
//tmpPS.Play();
|
tmpObj = firePanel;
|
StartCoroutine(AfterPSPlay("群体攻击,充能爆发"));
|
}
|
|
IEnumerator AfterPSPlay(string info)
|
{
|
yield return new WaitForSeconds(1.2f);
|
bgBtn.interactable = true;
|
srImage.SetActive(true);
|
infoImage.SetActive(true);
|
infoTxt.text = info;
|
tmpObj.SetActive(true);
|
}
|
private void Wood()
|
{
|
images.SetActive(true);
|
|
tmpPS = woodPS;
|
|
tmpPS.SetActive(true);
|
|
tmpObj = woodPanel;
|
|
StartCoroutine(AfterPSPlay("单体攻击,狙击秒杀"));
|
|
}
|
private void Water()
|
{
|
images.SetActive(true);
|
|
tmpPS = waterPS;
|
|
tmpPS.SetActive(true);
|
|
tmpObj = waterPanel;
|
StartCoroutine(AfterPSPlay("群体减速,减速增伤"));
|
|
}
|
|
|
private void OnClickBtn()
|
{
|
if (callBack != null)
|
{
|
bgBtn.interactable = false;
|
if (tmpPS != null) tmpPS.SetActive(false);
|
//if (tmpObj != null) tmpObj.SetActive(false);
|
images.SetActive(false);
|
srImage.SetActive(false);
|
infoImage.SetActive(false);
|
PlayClosePs();
|
}
|
}
|
|
Vector3 endScale = new Vector3(0.2f, 0.2f, 0.2f);
|
private void PlayClosePs()
|
{
|
tmpObj.transform.Find("Images").gameObject.SetActive(false);
|
tmpObj.transform.Find("Icon").GetComponent<Image>().enabled = true;
|
|
//RectTransform ts = tmpObj.GetComponent<RectTransform>();
|
|
tmpObj.transform.DOScale(endScale, 1.0f);
|
// isRotate = true;
|
// offect = 0;
|
tmpObj.transform.DOMove(btnImageTS.transform.position, 1f).SetEase(Ease.OutQuad).OnComplete(Close);
|
//ts.DOAnchorPos(btnImageRectTS.anchoredPosition, 1.0f).OnComplete(Close);
|
}
|
|
// bool isRotate = false;
|
// float offect = 0;
|
// /// <summary>
|
// /// LateUpdate is called every frame, if the Behaviour is enabled.
|
// /// It is called after all Update functions have been called.
|
// /// </summary>
|
// void LateUpdate()
|
// {
|
// if (isRotate)
|
// {
|
// offect += Time.deltaTime;
|
// tmpObj.transform.localRotation = Quaternion.Euler(0, 0, offect * 1000);
|
// }
|
// }
|
|
private void Close()
|
{
|
//isRotate = false;
|
tmpObj.gameObject.SetActive(false);
|
gameObject.SetActive(false);
|
callBack();
|
}
|
}
|