コード例 #1
0
    /// <summary>
    /// ウィンドウへのフォーカスが変化したときに呼ばれる
    /// </summary>
    /// <param name="focus"></param>
    private void OnApplicationFocus(bool focus)
    {
        if (focus)
        {
            // もしウィンドウハンドル取得に失敗していたら再取得
            if (!uniWin.IsActive)
            {
                FindMyWindow();
            }

            // アクティブウィンドウを監視して
            if (!isWindowChecked)
            {
                if (uniWin.CheckActiveWindow())
                {
                    isWindowChecked = true;                     // どうやら正しくウィンドウをつかめているよう
                }
                else
                {
                    // ウィンドウが違っているようなので、もう一度アクティブウィンドウを取得
                    uniWin.Reset();
                    uniWin.Dispose();
                    uniWin = new UniWinApi();
                    FindMyWindow();
                }
            }
        }
    }
コード例 #2
0
    // Use this for initialization
    void Awake()
    {
        if (!currentCamera)
        {
            // メインカメラを探す
            currentCamera = Camera.main;

            // もしメインカメラが見つからなければ、Findで探す
            if (!currentCamera)
            {
                currentCamera = FindObjectOfType <Camera>();
            }
        }

        // カメラの元の背景を記憶
        if (currentCamera)
        {
            originalCameraClearFlags = currentCamera.clearFlags;
            originalCameraBackground = currentCamera.backgroundColor;
        }
        // 描画色抽出用テクスチャ
        colorPickerTexture = new Texture2D(1, 1, TextureFormat.ARGB32, false);

        // ウィンドウ制御用のインスタンス作成
        uniWin = new UniWinApi();

        // 自分のウィンドウを取得
        FindMyWindow();
    }
コード例 #3
0
    /// <summary>
    /// 自分のウィンドウハンドルを見つける
    /// </summary>
    private void FindMyWindow()
    {
        // Unityプロジェクト名を取得
        string title = UniWinApi.GetProjectName();

        // まず自分のウィンドウタイトルで探す
        if (title != "" || !uniWin.FindHandleByTitle(title))
        {
            // 名前がダメなら、今アクティブなウィンドウを取得
            uniWin.FindHandle();
        }
    }
コード例 #4
0
    /// <summary>
    /// 自分のウィンドウハンドルを見つける
    /// </summary>
    private void FindMyWindow()
    {
        // ウィンドウが確かではないとしておく
        isWindowChecked = false;

        // 現在このウィンドウがアクティブでなければ、取得はやめておく
        if (!Application.isFocused)
        {
            return;
        }

        // 今アクティブなウィンドウを取得
        var window = UniWinApi.FindWindow();

        if (window == null)
        {
            return;
        }

        if (Application.isEditor)
        {
            // Unityエディタと一致するかチェック
            //  (別アプリのウィンドウは対象とさせない)
            if (window.ProcessName != "Unity")
            {
                return;
            }
        }
        else
        {
            // このUnityプロジェクトの名前と一致するかどうかをチェック
            //  (別アプリのウィンドウは対象とさせない)
            if (window.Title != Application.productName)
            {
                return;
            }
        }

        // 見つかったウィンドウを利用開始
        uniWin.SetWindow(window);

        // 初期状態を反映
        SetTopmost(_isTopmost);
        SetMaximized(_isMaximized);
        SetMinimized(_isMinimized);
        SetTransparent(_isTransparent);
        if (_enableFileDrop)
        {
            BeginFileDrop();
        }
    }
コード例 #5
0
    // Use this for initialization
    void Awake()
    {
        // カメラの元の背景を記憶
        this.originalCameraClearFlags = Camera.main.clearFlags;
        this.originalCameraBackground = Camera.main.backgroundColor;

        // 描画色抽出用テクスチャ
        this.colorPickerTexture = new Texture2D(1, 1, TextureFormat.ARGB32, false);

        // ウィンドウ制御用のインスタンス作成
        uniWin = new UniWinApi();

        // 名前からウィンドウを取得
        FindMyWindow();
    }
コード例 #6
0
    /// <summary>
    /// 自分のウィンドウハンドルを見つける
    /// </summary>
    private void FindMyWindow()
    {
        // 今アクティブなウィンドウを取得
        var window = UniWinApi.FindWindow();

        if (window == null)
        {
            return;
        }

        // 見つかったウィンドウを利用開始
        uniWin.SetWindow(window);

        // 初期状態を反映
        SetTopmost(_isTopmost);
        SetMaximized(_isMaximized);
        SetMinimized(_isMinimized);
        SetTransparent(_isTransparent);
        if (_enableFileDrop)
        {
            BeginFileDrop();
        }
    }
コード例 #7
0
    /// <summary>
    /// 最大化時以外なら、マウスドラッグによってウィンドウを移動
    /// </summary>
    void DragMove()
    {
        // ドラッグでの移動が無効化されていた場合
        if (!enableDragMove)
        {
            isDragging = false;
            return;
        }

        // 最大化時はウィンドウドラッグは行わない
        if (uniWin.IsMaximized)
        {
            isDragging = false;
            return;
        }

        // マウスドラッグでウィンドウ移動
        if (Input.GetMouseButtonDown(0))
        {
            lastMousePosition = UniWinApi.GetCursorPosition();
            isDragging        = true;
        }
        if (!Input.GetMouseButton(0))
        {
            isDragging = false;
        }
        if (isDragging)
        {
            Vector2 mousePos = UniWinApi.GetCursorPosition();
            Vector2 delta    = mousePos - lastMousePosition;
            lastMousePosition = mousePos;

            Vector2 windowPosition = uniWin.GetPosition(); // 現在のウィンドウ位置を取得
            windowPosition += delta;                       // ウィンドウ位置に上下左右移動分を加える
            uniWin.SetPosition(windowPosition);            // ウィンドウ位置を設定
        }
    }