// Update is called once per frame void Update() { // キー、マウス操作の下ウィンドウへの透過状態を更新 UpdateFocusable(); // もしウィンドウハンドル取得に失敗していたら再取得 // キー押下時点でアクティブなのは自分のウィンドウと仮定 // 特にビルドしたものの実行だと起動時に見失ったりするので。 if (Input.anyKeyDown) { if (!window.IsActive) { FindMyWindow(); } } // Esc を押すとウィンドウ透過切替 if (Input.GetKeyDown(KeyCode.Escape)) { ToggleWindowTransparency(); } // Home を押すと最大化切替 if (Input.GetKeyDown(KeyCode.Home)) { ToggleMaximize(); } // Insert を押すと最小化切替 if (Input.GetKeyDown(KeyCode.Insert)) { ToggleMinimize(); } // マウスドラッグでウィンドウ移動 if (Input.GetMouseButtonDown(0)) { this.lastMousePosition = window.GetCursorPosition(); this.isDragging = true; } if (Input.GetMouseButtonUp(0)) { this.isDragging = false; } if (isDragging) { Vector2 mousePos = window.GetCursorPosition(); Vector2 delta = mousePos - this.lastMousePosition; this.lastMousePosition = mousePos; Vector2 windowPosition = window.GetPosition(); // 現在のウィンドウ位置を取得 windowPosition += delta; // ウィンドウ位置に上下左右移動分を加える window.SetPosition(windowPosition); // ウィンドウ位置を設定 } // ジョイスティックまたはカーソルキーでウィンドウ移動 // 画面Y座標は下が大なので上下反転 Vector2 axes = new Vector2(Input.GetAxis("Horizontal"), -Input.GetAxis("Vertical")); if (axes.sqrMagnitude != 0f) { Vector2 windowPosition = window.GetPosition(); // 現在のウィンドウ位置を取得 windowPosition += axes * 10.0f; // ウィンドウ位置に上下左右移動分を加える。係数10.0fは適当。 window.SetPosition(windowPosition); // ウィンドウ位置を設定 } //ToggleFocusableOnRay(); // ウィンドウ枠が復活している場合があるので監視するため、呼ぶ window.Update(); }