給Unity3d添加一個漂亮的標題欄


  我們在做好一個小Unity3d APP,我們一般都會興致勃勃的導出一個exe,嘗試着玩我們的app。感覺還不錯,有板有眼的了。然而事與願違,我們APP里面的內容挺漂亮的,但是它的標題欄是windows自帶的樣式感覺很不匹配啊。或者我們想在標題欄加個設置的按鈕呢?好吧,那我們來想想可不可以通過重繪這個標題欄以使它和我們的內容比較匹配以達到美化的效果。

  首先我我個人覺得重繪u3d的標題欄意義不是很大。一,U3d的app我們更多是在移動設配上運行的;二,重繪了u3d的標題欄並不是很穩定,u3d會自己覆蓋掉我們的重繪效果。所以我們想在window下要使u3d的標題欄和內容比較匹配,可以采用折中的辦法。先去掉u3d的標題欄,再在新建一個窗口,並在此窗口上重繪標題欄(用客戶區模擬也可以),最后將這個u3d窗口放到這個窗口上來就能達到我們的效果了。

  這個對於新窗口的創建和重繪我都封裝在dll里面了,有興趣的同學可以聯系我么索取源碼,寫的不好,大家共同學習。在這里只提供dll。在MFC,win32程序,winform都可以使用。在
u3d中的話,只要把dll加進去簡單寫幾行代碼就可以了。我們新建一個腳本加入代碼。

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

public class Script1 : MonoBehaviour
{
    [DllImport("RedrawTitlebar", EntryPoint = "RedrawTitlebar", CallingConvention = CallingConvention.Cdecl)]
    private static extern void RedrawTitlebar(IntPtr _hWnd, IntPtr _hInst);
    
    // Use this for initialization
    void Start()
    {
#if UNITY_STANDALONE_WIN && !UNITY_EDITOR && !UNITY_EDITOR_WIN
        RedrawTitlebar(Common.GetProcessWnd(), Common.GetProcessInstance());
#endif
    }
}

之后導出exe就可以看到效果了。

效果如圖:

 轉載請注明出處:http://www.cnblogs.com/fyluyg/p/6093425.html

下載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM