2017-09-11 50 views
1

我已經爲圖形和屏幕創建了UI選項菜單。問題是我能夠爲全屏模式添加一個布爾值。我需要添加3種模式的下拉菜單:全屏,窗口和沒有框架的窗口(拉伸到整個屏幕尺寸)。我如何獲得第三種模式?在設置中添加屏幕模式

回答

1

結賬this sample code。不過,它使用了user32.dll庫,因此您很可能需要在您的項目中引用它。

using System; 
using System.Collections; 
using System.Runtime.InteropServices; 
using System.Diagnostics; 
using UnityEngine; 

public class WindowMod : MonoBehaviour 
{ 
public Rect screenPosition; 

[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(); 

// not used rigth now 
//const uint SWP_NOMOVE = 0x2; 
//const uint SWP_NOSIZE = 1; 
//const uint SWP_NOZORDER = 0x4; 
//const uint SWP_HIDEWINDOW = 0x0080; 

const uint SWP_SHOWWINDOW = 0x0040; 
const int GWL_STYLE = -16; 
const int WS_BORDER = 1; 

void Start() 
{ 
    SetWindowLong(GetForegroundWindow(), GWL_STYLE, WS_BORDER); 
    bool result = SetWindowPos (GetForegroundWindow(), 0,(int)screenPosition.x,(int)screenPosition.y, (int)screenPosition.width,(int) screenPosition.height, SWP_SHOWWINDOW); 
} 

用這種方法你最好的選擇將是:

  1. 創建所有選項的枚舉,例如public enum WindowMode { FullScreen, Borderless, Window }
  2. 與採用枚舉作爲參數的方法創建一個管理器類:public void SetWindowMode(WindowMode wm // or int) {...}
  3. 將其連線,以便在使用UUI的選項菜單上的組合框中選擇項目時調用該方法EventSystem thingy
  4. 就是這樣。