zoukankan      html  css  js  c++  java
  • 给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

    下载

  • 相关阅读:
    c#添加托盘图标右键后显示菜单选项
    mysql workbench修改字段报错
    mysql增删改查语句
    连接win7的mysql很慢解决方法
    uvm_cmdline_processor
    cadence help文件库调出指令 :cdnshelp
    设置开机自动运行vncserver
    Vector bit-select and part-select addressing verilog片选写法
    Verilog三段式状态机描述
    同步FIFO学习
  • 原文地址:https://www.cnblogs.com/fyluyg/p/6093425.html
Copyright © 2011-2022 走看看