using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using UnityEditor;
using UnityEngine;

public class WindowsBasicConfig : MonoBehaviour
{


    [DllImport("user32.dll")]
    static extern IntPtr SetWindowLong(IntPtr hwnd, int _nIndex, int dwNewLong);
    [DllImport("user32.dll")]
    static extern bool SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
    [DllImport("user32.dll")]
    static extern IntPtr GetForegroundWindow();

    const uint SWP_SHOWWINDOW = 0x0040;
    const int GWL_STYLE = -16;  //边框用的
    const int WS_BORDER = 1;
    const int WS_POPUP = 0x800000;

    int _posX ;
    int _posY ;
    int _Txtwith ;
    int _Txtheight ;






    //刷新FPS显示间隔
    private float updateInterval = 0.5F;
    //是否显示FPS
    private bool IsGUI;
    //刷新FPS显示间隔计时器
    private float timeleft;
    // 当前FPS
    private float m_FPS;
    private GUIStyle titleStyle2 = new GUIStyle();



    private void Awake()
    {
        XmlManager xml = new XmlManager();
    }




    void Start()
    {
        _posX = int.Parse(XmlManager.XmlData["窗口化无边框窗口位置x"]);
        _posY = int.Parse(XmlManager.XmlData["窗口化无边框窗口位置y"]);
        _Txtwith = int.Parse(XmlManager.XmlData["屏幕宽"]);
        _Txtheight = int.Parse(XmlManager.XmlData["屏幕高"]);


        Cursor.visible = XmlManager.XmlData["鼠标隐藏"] == "0" ? false : true;

        bool isScence = XmlManager.XmlData["屏幕全屏"] == "0" ? false : true;
        Screen.SetResolution(int.Parse(XmlManager.XmlData["屏幕宽"]), int.Parse(XmlManager.XmlData["屏幕高"]), isScence);

        if (!isScence)
        {

            if (XmlManager.XmlData["窗口化无边框"] == "0" ? false : true)
            {

                StartCoroutine("Setposition");

            }

        }

        //垂直同步
        QualitySettings.vSyncCount = int.Parse(XmlManager.XmlData["是否开启垂直同步,0关闭,1默认65Fps,2默认30FPS"]);
        //关闭垂直同步限制FPS
        Application.targetFrameRate = int.Parse(XmlManager.XmlData["限制FPS"]);
        titleStyle2.fontSize = int.Parse(XmlManager.XmlData["FPS字体大小"]);
        titleStyle2.normal.textColor = Color.green;
        IsGUI = XmlManager.XmlData["显示FPS"] == "0" ? false : true;
        timeleft = updateInterval;


    }


    IEnumerator Setposition()
    {
        yield return new WaitForSeconds(0.1f);      //不知道为什么发布于行后,设置位置的不会生效,我延迟0.1秒就可以
        SetWindowLong(GetForegroundWindow(), GWL_STYLE, WS_POPUP);      //无边框
        bool result = SetWindowPos(GetForegroundWindow(), 0, _posX, _posY, _Txtwith, _Txtheight, SWP_SHOWWINDOW);       //设置屏幕大小和位置
    }


    void Update()
    {
        timeleft -= Time.deltaTime;
        // 间隔结束-更新gui文本并开始新间隔
        if (timeleft <= 0.0)
        {
            m_FPS = 1 / Time.deltaTime;
            timeleft = updateInterval;

        }
        if (Input.GetKeyDown(KeyCode.Escape)) {
            // 退出全屏窗口化
            Screen.fullScreen = false;
        }
    // 1除于当前每一帧间隔时间 等于FPS   //  m_FPS=1f/Time.deltaTime; }
void OnGUI() { if (IsGUI) { string format = System.String.Format("{0:F2} FPS", m_FPS); GUI.Label(new Rect(Screen.width / 2, 10, 100, 100), format, titleStyle2); } } }
01-22 10:50
查看更多