一、框架图
二、关键脚本
MainBtnCtrl
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class MainBtnCtrl : MonoBehaviour
{
public Texture selectSp;
public Texture unSelectSp;
private string btnTag;
private void Awake()
{
btnTag = gameObject.transform.tag;
ConfirmIdentity();
gameObject.transform.GetComponent<Button>().onClick.AddListener(() => {
EventCenter.Broadcast(EventDefine.MainBtnClick_A, btnTag);
});
EventCenter.AddListener<string>(EventDefine.MainBtnClick_A, MainBtnClickHandle);
}
void Start()
{
}
private void MainBtnClickHandle(string arg)
{
if (arg ==btnTag)
{
gameObject.transform.GetChild(1).GetComponent<RawImage>().texture = selectSp;
gameObject.transform.GetChild(2).gameObject.SetActive(true);
GameUIManager_A.Instance.SetCurrentMainBtnState(btnTag);
EventCenter.Broadcast(EventDefine.MainBtnClick_A_GoState, btnTag);
}
else
{
gameObject.transform.GetChild(1).GetComponent<RawImage>().texture = unSelectSp;
gameObject.transform.GetChild(2).gameObject.SetActive(false);
}
}
public void ConfirmIdentity()
{
if (PlayerPrefs.GetInt("userType") == 0)
{
if (btnTag == Tags.AdminBtn)
{
gameObject.SetActive(false);
}
}
else if (PlayerPrefs.GetInt("userType") == 1)
{
if (btnTag == Tags.AdminBtn)
{
gameObject.SetActive(true);
}
}
}
private void OnDestroy()
{
EventCenter.RemoveListener<string>(EventDefine.MainBtnClick_A, MainBtnClickHandle);
}
}
NormalBtnCtrl
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class NormalBtnCtrl : MonoBehaviour
{
string btnTag;
Image icon;
Color color;
private void Awake()
{
btnTag = gameObject.transform.tag;
icon = GetComponent<Image>();
gameObject.transform.GetComponent<Button>().onClick.AddListener(() => {
EventCenter.Broadcast(EventDefine.NormalBtnClick_A, btnTag);
});
EventCenter.AddListener<string>(EventDefine.NormalBtnClick_A, NormalBtnClickHandle);
EventCenter.AddListener<string>(EventDefine.MainBtnClick_A, MainBtnClickHandle);
}
void Start()
{
}
private void NormalBtnClickHandle(string arg)
{
if (arg == btnTag)
{
ColorUtility.TryParseHtmlString("#ff743a", out color);
icon.color = color;
transform.GetChild(0).GetComponent<Text>().color = Color.white;
GameUIManager_A.Instance.SetCurrentNormalBtnState(btnTag);
}
else
{
ColorUtility.TryParseHtmlString("#ffffff", out color);
icon.color = color;
transform.GetChild(0).GetComponent<Text>().color = Color.black;
}
EventCenter.Broadcast(EventDefine.NormalBtnClick_A_GoState, arg);
}
private void MainBtnClickHandle(string arg)
{
if (btnTag.Trim() == Tags.HydraulicLock.Trim())
{
GameUIManager_A.Instance.SetCurrentNormalBtnState(btnTag);
ColorUtility.TryParseHtmlString("#ff743a", out color);
icon.color = color;
transform.GetChild(0).GetComponent<Text>().color = Color.white;
}
else
{
ColorUtility.TryParseHtmlString("#ffffff", out color);
icon.color = color;
transform.GetChild(0).GetComponent<Text>().color = Color.black;
}
}
private void OnDestroy()
{
EventCenter.RemoveListener<string>(EventDefine.NormalBtnClick_A, NormalBtnClickHandle);
EventCenter.RemoveListener<string>(EventDefine.MainBtnClick_A, MainBtnClickHandle);
}
}
FunctionalPrinciplePanel
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Video;
using UnityEngine.UI;
public class FunctionalPrinciplePanel : MonoBehaviour
{
[HideInInspector]
public VideoPlayer videoPlayer;
private RawImage rawImage;
[HideInInspector]
public Texture pingBao;
private string FunVideoPath="Function/HydraulicLock_Fun";
public Slider videoTimeSlider;
private bool isPlay = true;
public Button playPauseButton;
void Start()
{
videoPlayer = this.transform.GetChild(1).GetComponent<VideoPlayer>();
rawImage = this.transform.GetChild(1).GetComponent<RawImage>();
videoPlayer.isLooping = true;
videoPlayer.loopPointReached += EndReached;
videoPlayer.audioOutputMode = VideoAudioOutputMode.AudioSource;
videoPlayer.SetTargetAudioSource(0, this.transform.GetChild(1).GetComponent<AudioSource>());
videoPlayer.playOnAwake = false;
videoPlayer.IsAudioTrackEnabled(0);
PlayAnimatorVideo_Fun(FunVideoPath);
playPauseButton.onClick.AddListener(PlayOrPause);
EventCenter.AddListener<string>(EventDefine.MainBtnClick_A, MainBtnClickHandle);
EventCenter.AddListener<string>(EventDefine.NormalBtnClick_A, NormalBtnClickHandle);
EventCenter.AddListener(EventDefine.ExitBtn,VideoStop);
}
private void EndReached(VideoPlayer source)
{
videoTimeSlider.value = 0;
}
private void VideoStop()
{
StopAllCoroutines();
videoPlayer.Stop();
videoTimeSlider.gameObject.SetActive(false);
}
private void NormalBtnClickHandle(string normalBtnTag)
{
if (GameUIManager_A.Instance.currentMainBtnState==MainBtnStateEnum.FunBtn)
{
switch (normalBtnTag)
{
case "HydraulicLock":
FunVideoPath = "Function/HydraulicLock_Fun";
break;
case "BalancingValve":
FunVideoPath = "Function/BalancingValve_Fun";
break;
case "OilCylinder":
FunVideoPath = "Function/OilCylinder_Fun";
break;
case "GearPump":
FunVideoPath = "Function/GearPump_Fun";
break;
default:
break;
}
PlayAnimatorVideo_Fun(FunVideoPath);
}
}
private void MainBtnClickHandle(string mainBtnTag)
{
if (mainBtnTag == Tags.FunBtn)
{
gameObject.SetActive(true);
videoPlayer.Stop();
FunVideoPath = "Function/HydraulicLock_Fun";
PlayAnimatorVideo_Fun(FunVideoPath);
}
else{
videoPlayer.Stop();
gameObject.SetActive(false);
}
}
private void PlayAnimatorVideo_Fun(string arg)
{
videoPlayer.Stop();
PlayVideo_Animator(arg);
}
private void PlayVideo_Animator(string arg)
{
this.transform.GetChild(1).gameObject.SetActive(true);
this.transform.GetChild(1).gameObject.transform.GetComponent<RawImage>().enabled = false;
videoPlayer.clip = Resources.Load<VideoClip>("Video/" + arg);
videoPlayer.Prepare();
videoPlayer.prepareCompleted += VideoPlayer_prepareCompleted;
}
private void VideoPlayer_prepareCompleted(VideoPlayer source)
{
this.transform.GetChild(1).gameObject.transform.GetComponent<RawImage>().enabled = true;
videoPlayer.Play();
}
void PlayOrPause()
{
if (videoPlayer.clip != null && (ulong)videoPlayer.frame < videoPlayer.frameCount)
{
if (isPlay)
{
videoPlayer.Pause();
isPlay = false;
}
else
{
videoPlayer.Play();
isPlay = true;
}
}
}
void Update()
{
if (videoPlayer.texture == null)
{
return;
}
rawImage.texture = videoPlayer.texture;
videoTimeSlider.value = (float)(videoPlayer.time / videoPlayer.clip.length);
}
private void OnDestroy()
{
EventCenter.RemoveListener<string>(EventDefine.MainBtnClick_A, MainBtnClickHandle);
EventCenter.RemoveListener<string>(EventDefine.NormalBtnClick_A, NormalBtnClickHandle);
EventCenter.RemoveListener(EventDefine.ExitBtn, VideoStop);
}
}
StructureShowPanel
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class StructureShowPanel : MonoBehaviour
{
void Start()
{
gameObject.SetActive(false);
EventCenter.AddListener<string>(EventDefine.MainBtnClick_A, MainBtnClickHandle);
}
private void MainBtnClickHandle(string mainBtnTag)
{
if (mainBtnTag == Tags.StrucBtn)
{
gameObject.SetActive(true);
}
else
{
gameObject.SetActive(false);
}
}
private void OnDestroy()
{
EventCenter.RemoveListener<string>(EventDefine.MainBtnClick_A, MainBtnClickHandle);
}
}
DismantInstallGuidePanel
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Video;
using UnityEngine.UI;
using System;
public class DismantInstallGuidePanel : MonoBehaviour
{
[HideInInspector]
public VideoPlayer videoPlayer;
private RawImage rawImage;
[HideInInspector]
public Texture pingBao;
private string DIVideoPath = "Guide/HydraulicLock_Gui_Install";
public Slider videoTimeSlider;
private bool isPlay = true;
public Button playPauseButton;
private void Awake()
{
}
void Start()
{
gameObject.SetActive(false);
videoPlayer = this.transform.GetChild(1).GetComponent<VideoPlayer>();
rawImage = this.transform.GetChild(1).GetComponent<RawImage>();
videoPlayer.isLooping = true;
videoPlayer.loopPointReached += EndReached;
videoPlayer.audioOutputMode = VideoAudioOutputMode.AudioSource;
videoPlayer.SetTargetAudioSource(0, this.transform.GetChild(1).GetComponent<AudioSource>());
videoPlayer.playOnAwake = false;
videoPlayer.IsAudioTrackEnabled(0);
PlayAnimatorVideo_Guide(DIVideoPath);
playPauseButton.onClick.AddListener(PlayOrPause);
EventCenter.AddListener<string>(EventDefine.MainBtnClick_A, MainBtnClickHandle);
EventCenter.AddListener<string>(EventDefine.NormalBtnClick_A, NormalBtnClickHandle);
EventCenter.AddListener<string, string>(EventDefine.DismantInstallBtnClick_A, DismantInstallBtnClickHandle);
EventCenter.AddListener(EventDefine.ExitBtn, VideoStop);
}
void PlayOrPause()
{
if (videoPlayer.clip != null && (ulong)videoPlayer.frame < videoPlayer.frameCount)
{
if (isPlay)
{
// playPauseButton.image.sprite = pause;
videoPlayer.Pause();
isPlay = false;
}
else
{
// playPauseButton.image.sprite = play;
videoPlayer.Play();
isPlay = true;
}
}
}
private void VideoStop()
{
StopAllCoroutines();
videoPlayer.Stop();
videoTimeSlider.gameObject.SetActive(false);
}
/// <param name="source"></param>
private void EndReached(VideoPlayer source)
{
videoTimeSlider.value = 0;
}
private void DismantInstallBtnClickHandle(string argbtnTag, string argVideoPath)
{
videoPlayer.Stop();
videoPlayer.clip = Resources.Load<VideoClip>("Video/" + argVideoPath);
videoPlayer.Play();
}
private void NormalBtnClickHandle(string normalBtnTag)
{
if (GameUIManager_A.Instance.currentMainBtnState == MainBtnStateEnum.GuideBtn)
{
switch (normalBtnTag)
{
case "HydraulicLock":
DIVideoPath = "Guide/HydraulicLock_Gui_Install";
break;
case "BalancingValve":
DIVideoPath = "Guide/BalancingValve_Gui_Install";
break;
case "OilCylinder":
DIVideoPath = "Guide/OilCylinder_Gui_Install";
break;
case "GearPump":
DIVideoPath = "Guide/GearPump_Gui_Install";
break;
default:
break;
}
PlayAnimatorVideo_Guide(DIVideoPath);
}
}
private void MainBtnClickHandle(string mainBtnTag)
{
// Debug.Log("mainBtnTag"+ mainBtnTag);
if (mainBtnTag == Tags.GuideBtn)
{
gameObject.SetActive(true);
videoPlayer.Stop();
DIVideoPath = "Guide/HydraulicLock_Gui_Install";
PlayAnimatorVideo_Guide(DIVideoPath);
}
else
{
videoPlayer.Stop();
gameObject.SetActive(false);
}
}
private void PlayAnimatorVideo_Guide(string arg)
{
videoPlayer.Stop();
PlayVideo_Animator(arg);
}
private void PlayVideo_Animator(string arg)
{
this.transform.GetChild(1).gameObject.SetActive(true);
this.transform.GetChild(1).gameObject.transform.GetComponent<RawImage>().enabled = false;
videoPlayer.clip = Resources.Load<VideoClip>("Video/" + arg);
videoPlayer.Prepare();
videoPlayer.prepareCompleted += VideoPlayer_prepareCompleted;
videoPlayer.frame += 100;
}
private void VideoPlayer_prepareCompleted(VideoPlayer source)
{
this.transform.GetChild(1).gameObject.transform.GetComponent<RawImage>().enabled = true;
videoPlayer.Play();
}
void Update()
{
if (videoPlayer.texture == null)
{
return;
}
rawImage.texture = videoPlayer.texture;
videoTimeSlider.value = (float)(videoPlayer.time / videoPlayer.clip.length);
}
private void OnDestroy()
{
EventCenter.RemoveListener<string>(EventDefine.MainBtnClick_A, MainBtnClickHandle);
EventCenter.RemoveListener<string>(EventDefine.NormalBtnClick_A, NormalBtnClickHandle);
EventCenter.AddListener<string, string>(EventDefine.DismantInstallBtnClick_A, DismantInstallBtnClickHandle);
EventCenter.RemoveListener(EventDefine.ExitBtn, VideoStop);
}
}
DismantInstallTrainPanel
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DismantInstallTrainPanel : MonoBehaviour
{
void Start()
{
gameObject.SetActive(false);
EventCenter.AddListener<string>(EventDefine.MainBtnClick_A, MainBtnClickHandle);
}
private void MainBtnClickHandle(string mainBtnTag)
{
if (mainBtnTag == Tags.TrainBtn)
{
gameObject.SetActive(true);
}
else
{
gameObject.SetActive(false);
}
}
private void OnDestroy()
{
EventCenter.RemoveListener<string>(EventDefine.MainBtnClick_A, MainBtnClickHandle);
}
}
AnalysisDiagnosisPanel
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;
public class AnalysisDiagnosisPanel : MonoBehaviour {
[HideInInspector]
public VideoPlayer videoPlayer;
private RawImage rawImage;
[HideInInspector]
public Texture pingBao;
private string videoPath = "Analy/HydraulicLock_Fault";
public Slider videoTimeSlider;
private bool isPlay = true;
public Button playPauseButton;
public GameObject enterExit;
void Start()
{
gameObject.SetActive(false);
videoPlayer = this.transform.GetChild(1).GetComponent<VideoPlayer>();
rawImage = this.transform.GetChild(1).GetComponent<RawImage>();
videoPlayer.isLooping = true;
videoPlayer.loopPointReached += EndReached;
videoPlayer.audioOutputMode = VideoAudioOutputMode.AudioSource;
videoPlayer.SetTargetAudioSource(0, this.transform.GetChild(1).GetComponent<AudioSource>());
videoPlayer.playOnAwake = false;
videoPlayer.IsAudioTrackEnabled(0);
PlayAnimatorVideo_Analy(videoPath);
playPauseButton.onClick.AddListener(PlayOrPause);
EventCenter.AddListener<string>(EventDefine.MainBtnClick_A, MainBtnClickHandle);
EventCenter.AddListener<string>(EventDefine.NormalBtnClick_A, NormalBtnClickHandle);
EventCenter.AddListener<string>(EventDefine.PlayAnimVideo_Analy, PlayAnimatorVideo_Analy);
EventCenter.AddListener(EventDefine.ExitBtn, VideoStop);
}
private void EndReached(VideoPlayer source)
{
videoTimeSlider.value = 0;
}
private void VideoStop()
{
StopAllCoroutines();
videoPlayer.Stop();
videoTimeSlider.gameObject.SetActive(false);
}
private void MainBtnClickHandle(string mainBtnTag)
{
if (mainBtnTag == Tags.AnalyBtn)
{
gameObject.SetActive(true);
videoPlayer.Stop();
videoPath = "Analy/HydraulicLock_Fault";
PlayAnimatorVideo_Analy(videoPath);
enterExit.SetActive(true);
}
else
{
videoPlayer.Stop();
gameObject.SetActive(false);
}
}
private void NormalBtnClickHandle(string normalBtnTag)
{
if (GameUIManager_A.Instance.currentMainBtnState == MainBtnStateEnum.AnalyBtn)
{
switch (normalBtnTag)
{
case "HydraulicLock":
videoPath = "Analy/HydraulicLock_Fault";
PlayAnimatorVideo_Analy(videoPath);
enterExit.SetActive(true);
break;
case "BalancingValve":
videoPath = "Analy/BalancingValve_Fault";
PlayAnimatorVideo_Analy(videoPath);
enterExit.SetActive(true);
break;
case "OilCylinder":
videoPlayer.Stop();
enterExit.SetActive(false);
break;
case "GearPump":
videoPlayer.Stop();
enterExit.SetActive(false);
break;
default:
break;
}
}
}
private void PlayAnimatorVideo_Analy(string arg)
{
videoPlayer.Stop();
PlayVideo_Animator(arg);
}
private void PlayVideo_Animator(string arg)
{
this.transform.GetChild(1).gameObject.SetActive(true);
this.transform.GetChild(1).gameObject.transform.GetComponent<RawImage>().enabled = false;
videoPlayer.clip = Resources.Load<VideoClip>("Video/" + arg);
videoPlayer.Prepare();
videoPlayer.prepareCompleted += VideoPlayer_prepareCompleted;
videoPlayer.frame += 100;
}
private void VideoPlayer_prepareCompleted(VideoPlayer source)
{
this.transform.GetChild(1).gameObject.transform.GetComponent<RawImage>().enabled = true;
videoPlayer.Play();
}
void PlayOrPause()
{
if (videoPlayer.clip != null && (ulong)videoPlayer.frame < videoPlayer.frameCount)
{
if (isPlay)
{
// playPauseButton.image.sprite = pause;
videoPlayer.Pause();
isPlay = false;
}
else
{
// playPauseButton.image.sprite = play;
videoPlayer.Play();
isPlay = true;
}
}
}
void Update()
{
if (videoPlayer.texture == null)
{
return;
}
rawImage.texture = videoPlayer.texture;
videoTimeSlider.value = (float)(videoPlayer.time / videoPlayer.clip.length);
}
private void OnDestroy()
{
EventCenter.RemoveListener<string>(EventDefine.MainBtnClick_A, MainBtnClickHandle);
EventCenter.RemoveListener<string>(EventDefine.NormalBtnClick_A, NormalBtnClickHandle);
EventCenter.RemoveListener<string>(EventDefine.PlayAnimVideo_Analy, PlayAnimatorVideo_Analy);
EventCenter.RemoveListener(EventDefine.ExitBtn, VideoStop);
}
}
ExaminationSystemPanel
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ExaminationSystemPanel : MonoBehaviour
{
void Start()
{
gameObject.SetActive(false);
EventCenter.AddListener<string>(EventDefine.MainBtnClick_A, Show);
}
private void Show(string btnName)
{
if (btnName ==Tags.ExamBtn)
{
gameObject.SetActive(true);
}
else
{
gameObject.SetActive(false);
}
}
}
AdministratorPanel
···
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AdministratorPanel : MonoBehaviour
{
void Start()
{
ConfirmIdentity();
gameObject.SetActive(false);
EventCenter.AddListener<string>(EventDefine.MainBtnClick_A, Show);
}
private void Show(string btnName)
{
if (btnName == Tags.AdminBtn)
{
gameObject.SetActive(true);
}
else
{
gameObject.SetActive(false);
}
}
public void ConfirmIdentity()
{
if (PlayerPrefs.GetInt("userType") == 0)
{
gameObject.SetActive(false);
}
else if (PlayerPrefs.GetInt("userType") == 1)
{
gameObject.SetActive(true);
}
}
private void OnDestroy()
{
EventCenter.RemoveListener<string>(EventDefine.MainBtnClick_A, Show);
}
}
···
ExamUI
···
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ExamUI : MonoBehaviour {
void Start()
{
gameObject.SetActive(false);
EventCenter.AddListener<string>(EventDefine.MainBtnClick_A, MainBtnClickHandle);
}
private void MainBtnClickHandle(string arg)
{
if (arg == Tags.ExamBtn)
{
gameObject.SetActive(true);
}
else
{
gameObject.SetActive(false);
}
}
private void OnDestroy()
{
EventCenter.RemoveListener<string>(EventDefine.MainBtnClick_A, MainBtnClickHandle);
}
}
···
GameUIManager_A
···
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public enum MainBtnStateEnum
{
FunBtn,
StrucBtn,
GuideBtn,
TrainBtn,
AnalyBtn,
ExamBtn,
}
public enum NormalBtnStateEnum
{
HydraulicLockBtn,
BalancingValveBtn,
OilCylinderBtn,
GearPumpBtn,
}
public enum TrainBtnStateEnum
{
None,
StrengthState,
FreeState,
}
public enum ExamBtnStateEnum
{
BeforeExam,
BackExam,
}
public class GameUIManager_A : MonoBehaviour
{
public static GameUIManager_A Instance;
void Awake()
{
Instance = this;
}
public MainBtnStateEnum currentMainBtnState = MainBtnStateEnum.FunBtn;
public NormalBtnStateEnum currentNormalBtnState = NormalBtnStateEnum.HydraulicLockBtn;
public TrainBtnStateEnum currentTrainState = TrainBtnStateEnum.StrengthState;
public ExamBtnStateEnum currentExamState = ExamBtnStateEnum.BeforeExam;
public bool isPause = false;
private void Start()
{
}
private void Update()
{
}
private void OnMouseDown()
{
}
public void SetCurrentMainBtnState(string mainBtnTag) {
switch (mainBtnTag)
{
case "FunBtn":
currentMainBtnState = MainBtnStateEnum.FunBtn;
break;
case "StrucBtn":
currentMainBtnState = MainBtnStateEnum.StrucBtn;
break;
case "GuideBtn":
currentMainBtnState = MainBtnStateEnum.GuideBtn;
break;
case "TrainBtn":
currentMainBtnState = MainBtnStateEnum.TrainBtn;
break;
case "AnalyBtn":
currentMainBtnState = MainBtnStateEnum.AnalyBtn;
break;
case "ExamBtn":
currentMainBtnState = MainBtnStateEnum.ExamBtn;
break;
default:
break;
}
}
public void SetCurrentNormalBtnState(string normalBtnTag) {
switch (normalBtnTag)
{
case "HydraulicLock":
currentNormalBtnState = NormalBtnStateEnum.HydraulicLockBtn;
break;
case "BalancingValve":
currentNormalBtnState = NormalBtnStateEnum.BalancingValveBtn;
break;
case "OilCylinder":
currentNormalBtnState = NormalBtnStateEnum.OilCylinderBtn;
break;
case "GearPump":
currentNormalBtnState = NormalBtnStateEnum.GearPumpBtn;
break;
default:
break;
}
}
}
···
GameManager
···
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameManager : MonoBehaviour
{
public static GameManager Instance;
private void Awake()
{
Instance = this;
}
public Stack<int> itemIDStack = new Stack<int>();
void Start()
{
EventCenter.AddListener(EventDefine.ReStartBtn, ReStartBtnHandle);
}
private void ReStartBtnHandle()
{
itemIDStack = new Stack<int>();
}
private void ChildBtnClick_TrainHandle(string arg)
{
itemIDStack = new Stack<int>();
}
private void MainBtnClickHandle(string arg)
{
itemIDStack = new Stack<int>();
}
public void PushItemId(int id) {
itemIDStack.Push(id);
}
public int PopItemId() {
if (itemIDStack.Count>0)
{
int itemId = itemIDStack.Pop();
return itemId;
}
return 1;
}
public void ExitApp()
{
Debug.Log("Exit");
EventCenter.Broadcast(EventDefine.ExitBtn);
StartCoroutine(StopVideo());
}
IEnumerator StopVideo()
{
yield return new WaitForFixedUpdate();
Application.Quit();
}
private void OnDestroy()
{
EventCenter.RemoveListener(EventDefine.ReStartBtn, ReStartBtnHandle);
}
}
···
GoCtrl
···
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
public class GoCtrl : MonoBehaviour
{
public float amplification1;
public float amplification2;
public float shrink1;
public float shrink2;
string goTag;
string nomalBtnTag;
private Quaternion quaternion;
private void Awake()
{
goTag = transform.tag;
quaternion = gameObject.transform.localRotation;
}
void Start()
{
gameObject.SetActive(false);
EventCenter.AddListener<string>(EventDefine.MainBtnClick_A_GoState, MainBtnClickHandle);
EventCenter.AddListener<string>(EventDefine.NormalBtnClick_A_GoState, NormalBtnClickHandle_GoState);
EventCenter.AddListener<string>(EventDefine.StructureShowBtnClick_A, StructureShowBtnClickHandle);
EventCenter.AddListener<string>(EventDefine.ChildBtnClick_Train, ChildBtnClick_TrainHandle);
EventCenter.AddListener<bool>(EventDefine.AmplificationBtn, Amplification);
EventCenter.AddListener<bool>(EventDefine.ShrinkBtn, Shrink);
EventCenter.AddListener<bool>(EventDefine.RotateBtn, Roate);
EventCenter.AddListener(EventDefine.IknowBtn_Strength, IknowBtn_StrengthHandle);
EventCenter.AddListener(EventDefine.IknowBtn_Free, IknowBtn_FreeHandle);
EventCenter.AddListener(EventDefine.ReStartBtn, ReStartBtnHandle);
}
private void OnDestroy()
{
EventCenter.RemoveListener<string>(EventDefine.MainBtnClick_A_GoState, MainBtnClickHandle);
EventCenter.RemoveListener<string>(EventDefine.NormalBtnClick_A_GoState, NormalBtnClickHandle_GoState);
EventCenter.RemoveListener<string>(EventDefine.StructureShowBtnClick_A, StructureShowBtnClickHandle);
EventCenter.RemoveListener<string>(EventDefine.ChildBtnClick_Train, ChildBtnClick_TrainHandle);
EventCenter.RemoveListener<bool>(EventDefine.AmplificationBtn, Amplification);
EventCenter.RemoveListener<bool>(EventDefine.ShrinkBtn, Shrink);
EventCenter.RemoveListener<bool>(EventDefine.RotateBtn, Roate);
EventCenter.RemoveListener(EventDefine.IknowBtn_Strength, IknowBtn_StrengthHandle);
EventCenter.RemoveListener(EventDefine.IknowBtn_Free, IknowBtn_FreeHandle);
EventCenter.RemoveListener(EventDefine.ReStartBtn, ReStartBtnHandle);
}
private void ReStartBtnHandle()
{
switch (GameUIManager_A.Instance.currentNormalBtnState)
{
case NormalBtnStateEnum.HydraulicLockBtn:
nomalBtnTag = Tags.HydraulicLock;
break;
case NormalBtnStateEnum.BalancingValveBtn:
nomalBtnTag = Tags.BalancingValve;
break;
case NormalBtnStateEnum.OilCylinderBtn:
nomalBtnTag = Tags.OilCylinder;
break;
case NormalBtnStateEnum.GearPumpBtn:
nomalBtnTag = Tags.GearPump;
break;
default:
break;
}
if (nomalBtnTag == goTag)
{
gameObject.SetActive(true);
}
else
{
gameObject.SetActive(false);
}
}
private void ChildBtnClick_TrainHandle(string arg)
{
if (arg == "HydraulicLockBtn__Train")
{
gameObject.SetActive(true);
ResetGo();
}
else
{
gameObject.SetActive(false);
}
}
private void IknowBtn_FreeHandle()
{
if (GameUIManager_A.Instance.currentNormalBtnState == NormalBtnStateEnum.HydraulicLockBtn)
{
gameObject.SetActive(true);
}
}
private void IknowBtn_StrengthHandle()
{
if (GameUIManager_A.Instance.currentNormalBtnState == NormalBtnStateEnum.HydraulicLockBtn)
{
gameObject.SetActive(true);
}
}
private void StructureShowBtnClickHandle(string arg)
{
if (arg ==Tags.MassiveStructureBtn)
{
switch (GameUIManager_A.Instance.currentNormalBtnState)
{
case NormalBtnStateEnum.HydraulicLockBtn:
nomalBtnTag = Tags.HydraulicLock;
break;
case NormalBtnStateEnum.BalancingValveBtn:
nomalBtnTag = Tags.BalancingValve;
break;
case NormalBtnStateEnum.OilCylinderBtn:
nomalBtnTag = Tags.OilCylinder;
break;
case NormalBtnStateEnum.GearPumpBtn:
nomalBtnTag = Tags.GearPump;
break;
default:
break;
}
// Debug.Log(" nomalBtnTag ::" + nomalBtnTag);
if (nomalBtnTag==goTag)
{
gameObject.SetActive(true);
}
else
{
gameObject.SetActive(false);
}
}
else
{
gameObject.SetActive(false);
}
}
private void MainBtnClickHandle(string arg)
{
ResetGo();
gameObject.SetActive(false);
}
private void NormalBtnClickHandle_GoState(string normalBtnTag)
{
ResetGo();
if (GameUIManager_A.Instance.currentMainBtnState == MainBtnStateEnum.TrainBtn)
{
if (goTag == normalBtnTag)
{
gameObject.SetActive(true);
}
else
{
gameObject.SetActive(false);
}
}
else
{
gameObject.SetActive(false);
}
}
void ResetGo()
{
gameObject.transform.localScale = Vector3.one;
gameObject.transform.localRotation = quaternion;
gameObject.transform.GetComponent<RoateObject>().enabled = false;
}
private void Roate(bool arg)
{
if (arg)
{
gameObject.transform.GetComponent<RoateObject>().enabled = true;
}
else
{
gameObject.transform.GetComponent<RoateObject>().enabled = false;
gameObject.transform.DORotateQuaternion(quaternion, 1.5f);
}
}
private void Shrink(bool arg)
{
if (arg)
{
gameObject.transform.DOScale(shrink2, amplification2);
}
else
{
gameObject.transform.DOScale(shrink1, amplification2);
}
}
private void Amplification(bool arg)
{
if (arg)
{
gameObject.transform.DOScale(amplification1, amplification2);
}
else
{
gameObject.transform.DOScale(shrink1, amplification2);
}
}
private void OnEnable()
{
}
private void Hide(bool arg)
{
gameObject.SetActive(false);
gameObject.transform.localScale = Vector3.one;
}
private void OnDisable()
{
}
}
···
PartsCtrl
···
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
using System;
public class PartsCtrl : MonoBehaviour
{
public int partId;
public Vector3 from;
public Vector3 to;
public float fadeTime = 3f;
public NormalBtnStateEnum normalBtnStateEnum;
private Tweener tweener;
private void Awake()
{
from = transform.localPosition;
EventCenter.AddListener(EventDefine.IknowBtn_Strength, IknowBtn_StrengthHandle);
EventCenter.AddListener<int>(EventDefine.StrengthModeItemID, PartInstall);
EventCenter.AddListener(EventDefine.IknowBtn_Free, IknowBtn_FreeHandle);
EventCenter.AddListener<int>(EventDefine.FreeModeItemID, PartInstall);
EventCenter.AddListener<string>(EventDefine.MainBtnClick_A, MainBtnClickHandle);
EventCenter.AddListener<string>(EventDefine.NormalBtnClick_A, ChildBtnClick_StrucHandle);
EventCenter.AddListener(EventDefine.ReStartBtn, ReStartBtnHandle);
EventCenter.AddListener<bool>(EventDefine.PauseDoTween, PauseDoTweenHandle);
}
void Start()
{
EventCenter.AddListener<int>(EventDefine.UndoBtn, PartDismant);
}
private void OnDestroy()
{
EventCenter.RemoveListener(EventDefine.IknowBtn_Strength, IknowBtn_StrengthHandle);
EventCenter.RemoveListener<int>(EventDefine.StrengthModeItemID, PartInstall);
EventCenter.RemoveListener(EventDefine.IknowBtn_Free, IknowBtn_FreeHandle);
EventCenter.RemoveListener<int>(EventDefine.FreeModeItemID, PartInstall);
EventCenter.RemoveListener<string>(EventDefine.MainBtnClick_A, MainBtnClickHandle);
EventCenter.RemoveListener<string>(EventDefine.NormalBtnClick_A, ChildBtnClick_StrucHandle);
EventCenter.RemoveListener(EventDefine.ReStartBtn, ReStartBtnHandle);
EventCenter.RemoveListener<int>(EventDefine.UndoBtn, PartDismant);
EventCenter.RemoveListener<bool>(EventDefine.PauseDoTween, PauseDoTweenHandle);
}
private void ReStartBtnHandle()
{
transform.localPosition = from;
gameObject.SetActive(false);
}
private void ChildBtnClick_StrucHandle(string arg)
{
if (GameUIManager_A.Instance.currentMainBtnState == MainBtnStateEnum.TrainBtn)
{
transform.localPosition = from;
gameObject.SetActive(false);
}
}
private void MainBtnClickHandle(string arg)
{
transform.localPosition = from;
gameObject.SetActive(true);
}
private void IknowBtn_StrengthHandle()
{
gameObject.SetActive(false);
}
private void IknowBtn_FreeHandle()
{
gameObject.SetActive(false);
}
void Update()
{
}
private void LateUpdate()
{
}
void PartInstall(int itemID)
{
if (itemID == partId && GameUIManager_A.Instance.currentNormalBtnState == normalBtnStateEnum)
{
if (tweener != null)
{
tweener.SetAutoKill(false);
}
gameObject.SetActive(true);
gameObject.transform.localPosition = to;
tweener = transform.DOLocalMove(from, fadeTime);
if (tweener!=null)
{
Debug.Log("zhixing l ");
}
}
}
void PartDismant(int id)
{
if (partId == id)
{
if (tweener != null)
{
tweener.SetAutoKill(false);
}
tweener = transform.DOLocalMove(to, fadeTime).OnComplete(() => { gameObject.SetActive(false); });
}
}
private void PauseDoTweenHandle(bool boo)
{
if (boo)
{ gameObject.transform.DOPause(); return; }
gameObject.transform.DOPlay();
}
}
···