/// <summary> /// 将光标信息添加到数组 /// </summary> /// <param name="_cursorType">光标类型</param> /// <param name="_strTexCursorPath">光标资源纹理路径</param> /// <param name="_bCenterHotspot">热点是否在纹理中心</param> /// <param name="_vec2Hotspot">热点坐标</param> private void AddCursorInfo(EMouseCursorType _cursorType, string _strTexCursorPath, bool _bCenterHotspot = true, Vector2 _vec2Hotspot = new Vector2()) { /*鼠标资源是一直存在的,所以不用释放,等游戏结束直接释放即可*/ ResNode curRes = AssetBundleManager.GetAssets(AssetType.Asset_Cursour, _strTexCursorPath); if (null == curRes) { Trace.LogError("设置光标注册点错误,光标纹理资源获取失败.加载资源:" + _strTexCursorPath + " 失败!"); return; } Texture2D CursorTexture = curRes.ConvertRes <Texture2D>(); Vector2 tmpVec2Hotspot = Vector2.zero; if (CursorTexture == null && _cursorType != EMouseCursorType.MCT_None) { Trace.LogError("设置光标注册点错误,光标纹理资源获取失败.加载资源:" + _strTexCursorPath + " 失败!"); return; } tmpVec2Hotspot = _vec2Hotspot; if (_bCenterHotspot) { tmpVec2Hotspot = new Vector2(CursorTexture.width / 2, CursorTexture.height / 2); } FCursorInfo newCursorInfo = new FCursorInfo(CursorTexture, tmpVec2Hotspot); dic_CursorInfo.Add(_cursorType, newCursorInfo); }
// Sifaka START: Support Virtual Mouse Input private void UpdateActiveMouse() { var hardwareMouseMoved = (m_MousePosition - m_LastMousePosition).sqrMagnitude > 0.0f; var virtualMouseMoved = (m_VirtualMousePosition - m_LastVirtualMousePosition).sqrMagnitude > 0.0f; if (CachedVirtualMouse == null || (hardwareMouseMoved && !virtualMouseMoved) || (!virtualMouseMoved && m_ActiveMouseType == EMouseCursorType.Hardware)) { if (m_ActiveMouseType != EMouseCursorType.Hardware && CachedVirtualMouse != null) { if (CachedVirtualMouse.IsMouseVisible()) { CachedVirtualMouse.SetMouseVisibile(false); } } m_ActiveMouseType = EMouseCursorType.Hardware; } else if (CachedVirtualMouse != null && virtualMouseMoved) { // Update virtual mouse to match hardware mouse if (m_ActiveMouseType != EMouseCursorType.Virtual) { CachedVirtualMouse.SetMouseVisibile(true); CachedVirtualMouse.SetVirtualMousePosition(m_MousePosition); } m_ActiveMouseType = EMouseCursorType.Virtual; } }
private void InitialiseMousePosition() { m_MousePosition = UnityEngine.Input.mousePosition; m_LastMousePosition = UnityEngine.Input.mousePosition; if (CachedVirtualMouse != null) { m_VirtualMousePosition = CachedVirtualMouse.GetVirtualMousePosition(); m_LastVirtualMousePosition = CachedVirtualMouse.GetVirtualMousePosition(); } m_ActiveMouseType = EMouseCursorType.Hardware; _initialised = true; }