using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement; using JC.Unity.UI; public class NewUserGuiderManager : MonoBehaviour { [SerializeField] GameObject prefab_NewUserGuider; public static NewUserGuiderManager ins; void Awake() { if (ins) { Destroy(gameObject); return; } ins = this; DontDestroyOnLoad(gameObject); } void OnDestroy() { if (ins == this) ins = null; if (onSceneLoaded_added) SceneManager.sceneLoaded -= onSceneLoaded; } void Start() { SceneManager.sceneLoaded += onSceneLoaded; onSceneLoaded_added = true; if (!IsUserGuideFinished()) { ExecuteCurConfig(); SaveUserGuideFinished(true); } } bool onSceneLoaded_added = false; void onSceneLoaded(Scene scene, LoadSceneMode loadSceneMode) { //初始话的场景不会触发 if (scene.name == "Game" && GameMgr.gameType == 1) { switch (curConfigKey) { case "开始-限时游戏": OnClickedDestroyed(curConfigKey); break; case "限时游戏-选择距离": ExecuteCurConfig(); break; } } } public void OnSkip() { curConfigKey = null; SaveUserGuideFinished(true); } public void OnEnd() { curConfigKey = null; SaveUserGuideFinished(true); } public void ReviewNewUserGuide() { int viewCount = PersistenHandler.ins.menuBackCtr.views.Count; for (int i = 0; i < viewCount; i++) { PersistenHandler.ins.menuBackCtr.OnOnceBack(); } curConfigKey = "模块开机"; ExecuteCurConfig(); } void SaveUserGuideFinished(bool finished) { PlayerPrefs.SetInt("NewUserGuiderFinished", finished ? 1 : 0); } bool IsUserGuideFinished() { return PlayerPrefs.GetInt("NewUserGuiderFinished", 0) == 1 ? true : false; } void InitConfigs() { if (configsInited) return; configsInited = true; NewUserGuiderConfig config = new NewUserGuiderConfig(); config.hitPosType = 1; config.hitPos = new Vector2(-86.4f, -70.3f); config.pointerRotZ = 120; config.pointerPosType = 1; config.pointerPos = new Vector2(-155, -31); config.frameTipPosType = 1; config.frameTipPos = new Vector2(-73.5f, 106); config.frameTipText = "长按模块上的“开机”键,当绿灯闪烁时,即模块处于等待连接的状态。"; config.onStart = (g) => g.transform.Find("IconModule").gameObject.SetActive(true); configs.Add("模块开机", config); config = new NewUserGuiderConfig(); config.hitActive = false; config.pointerActive = false; config.frameTipPivot = "ct"; config.frameTipPosType = 1; config.frameTipPos = Vector2.zero; config.frameTipText = "恭喜您完成了本次新手教程,下次如果还\n要" + "了解本教程请在游戏教程中选择新手指导。"; config.onStart = (g) => { g.GetMaskClickedEvent().AddListener(() => { OnEnd(); }); GameMode gameMode = GameMgr.ins.gameMode; if (gameMode.GetType().Equals(typeof(TimeLimitGameMode))) { gameMode.PauseTimeCounting(g); g.action_OnDestroy += () => gameMode.ResumeTimeCounting(g); } }; configs.Add("教程结束", config); config = new NewUserGuiderConfig(); config.frameTipPivot = "rb"; config.frameTipPos = Vector2.zero; config.frameTipText = "点击视角归位按钮,按完按键后立刻以标准射箭姿势瞄准\n靶心," + "3秒后完成视角的自动归位。"; config.onPrepare = (g) => { if (!GameAssistUI.ins) { g.customPreparePass = false; return; } g.customPreparePass = true; g.hollowOutMask.isTargetRectCanThrough = false; RectTransform btn4 = GameAssistUI.ins.transform.Find("Button4") as RectTransform; g.hollowOutMask.SetTarget(btn4); RectTransform btn4_img = btn4.Find("Image") as RectTransform; g.config.hitPos = btn4_img.position; g.config.pointerRotZ = 120; g.config.pointerPos = btn4_img.position + RectTransformUtils.CanvasV3ToScreenV3(new Vector3(-60, 60), btn4); g.config.frameTipPos = btn4_img.position + RectTransformUtils.CanvasV3ToScreenV3(new Vector3(-120, 120), btn4); // g.clickedWillPlayAudioBtn = false; // g.GetMaskClickedEvent().AddListener(() => { // btn4.GetComponent