using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; /* 模拟鼠标控制器 主要负责自动开关模拟鼠标 在蓝牙正常连接状态下,非游戏界面自动开启模拟鼠标,游戏界面自动关闭模拟鼠标。 */ public class SimulateMouseController { public static SimulateMouseController ins; public static void Init() { ins = new SimulateMouseController(); SceneManager.sceneLoaded += (scene, mode) => { //去除添加OpenLocker的场景 if (!scene.name.StartsWith("Game") && !scene.name.Equals("Env0") && !scene.name.Equals("Env1") && !scene.name.Equals("Env3")) { Debug.Log("SimulateMouseController:"+ scene.name); ins.AddOpenLocker("NotGame"); } }; } bool bleConnected = false; //有locker就要保持鼠标开启状态 HashSet openLockerSet = new HashSet(); //AddOpenLocker 和 RemoveOpenLocker 应两两对应 public void AddOpenLocker(object locker) { openLockerSet.Add(locker); Debug.Log("AddOpenLock-" + locker); CheckAndOpenOrClose(); } public void RemoveOpenLocker(object locker) { openLockerSet.Remove(locker); Debug.Log("RemoveOpenLock-" + locker); CheckAndOpenOrClose(); } //蓝牙是否处于连接状态 public void SetBleConnected(bool connected) { bleConnected = connected; CheckAndOpenOrClose(); } //检测和改变开关 void CheckAndOpenOrClose() { Debug.Log("RemoveOpenLock after openLockerSet-" + bleConnected + " == " + openLockerSet.Count); if (bleConnected) { if (openLockerSet.Count > 0) { Open(); } else { Close(); } } else { Close(); } } void Open() { if (SB_EventSystem.ins && !SB_EventSystem.ins.simulateMouseIsAwaked) { SB_EventSystem.ins.AwakenSimulateMouse(); // Debug.Log("simulate-mouse-open"); } } void Close() { if (SB_EventSystem.ins && SB_EventSystem.ins.simulateMouseIsAwaked) { SB_EventSystem.ins.AwakenSimulateMouse(); // Debug.Log("simulate-mouse-close"); } } }