最近做了一个项目,需要给Linux桌面的Unity3d游戏做一个Splash屏。 在无盘系统中,游戏启动到显示游戏的内容,可能需要很长时间。 这个时候显示黑屏,用户体验肯定不大好。 Unity3d对移动端提供了Splash Screen的设置和显示,但是在桌面系统中(Windows,Linux,MAC)没有提供该服务。 为了克服无盘系统长时间的黑屏,特增加Splash屏幕。
对Linux下的图形编程是新手,所有先是浏览了所有的Xlib的编程接口,推荐http://tronche.com/gui/x/xlib/。 由于Unity3d的窗口创建,显示是unity3d自己创建出来的,而且其没有提供任何方法做控制,但是只能设置其background 的pixmap来实现。 需要彻底解决黑屏和增加Splash Screen的问题,需要准备一下基础知识:
X Bitmap和Pixmap
大家可以从网上能找出答案,我需要指出的是,X Bitmap是黑白的,不支持彩色,而且Xlib或是X Window在设置背景图片的时候,需要用的是pixmap (这点太坑了,花了很久才知道这个问题)。 而Xlib不直接提供方法从*.xpm文件中读入,需要libXpm库,但是一般装Xorg的时候带了。XLib编程的错误代码解析
在遇到自己程序不起作用的时候,如何分析错误代码是关键,大家可以参考http://www.rahul.net/kenton/perrors.html#IntroductionXSetWindowBackgroundPixmap 和根窗口
XSetWindowBackgroundPixmap 可以对窗口的背景进行设置,我们可以找到自己的游戏窗口,并且设置背景。但是在无盘系统中,图片可能比较大,可能也有短暂的黑屏,这个时候可以先设置根窗口

本文介绍了如何在Linux环境下为Unity3d游戏添加Splash屏幕,以改善无盘系统启动时的黑屏用户体验。通过Xlib编程,利用XBitmap和Pixmap设置窗口背景,以及错误代码解析,解决了游戏启动过程中的黑屏问题。文章还提供了设置根窗口和游戏窗口背景的代码示例。
最低0.47元/天 解锁文章
134

被折叠的 条评论
为什么被折叠?



