/// <summary> /// 自分のウィンドウハンドルが不確かならば探しなおす /// </summary> private void UpdateTargetWindow() { if (uniWinCore == null) { uniWinCore = new UniWinCore(); } // ウィンドウがまだ取得できていなければ、取得の処理を行う if (!uniWinCore.IsActive) { uniWinCore.AttachMyWindow(); // ウィンドウを取得できたら最初の値を設定 if (uniWinCore.IsActive) { uniWinCore.SetTransparentType((UniWinCore.TransparentType)transparentType); uniWinCore.SetKeyColor(keyColor); SetTransparent(_isTransparent); SetTopmost(_isTopmost); SetClickThrough(_isClickThrough); SetAllowDrop(_allowDropFiles); // ウィンドウ取得時にはモニタ変更と同等の処理を行う OnMonitorChanged?.Invoke(); } } else { #if UNITY_EDITOR // エディタではゲームビューが閉じられたりドッキングされたりするため、変化していれば対象ウィンドウを変更 // アクティブウィンドウが現在の対象と同じならばなにもおこらない uniWinCore.AttachMyActiveWindow(); #endif } }
/// <summary> /// Check and process UniWinCore events /// </summary> private void UpdateEvents() { if (uniWinCore == null) { return; } if (uniWinCore.ObserveDroppedFiles(out var files)) { OnDropFiles?.Invoke(files); } if (uniWinCore.ObserveMonitorChanged()) { OnMonitorChanged?.Invoke(); } if (uniWinCore.ObserveWindowStyleChanged()) { // // モニタへのフィット指定がある状態で最大化解除された場合 // if (shouldFitMonitor && !uniWinCore.GetZoomed()) // { // //StartCoroutine("ForceZoomed"); // 時間差で最大化を強制 // //SetZoomed(true); // 強制的に最大化 ←必ずしも働かない // //shouldFitMonitor = false; // フィットを無効化 // } if (_shouldFitMonitor) { StartCoroutine("ForceZoomed"); // 時間差で最大化を強制 } OnStateChanged?.Invoke(); } }