Unity分屏显示效果

最近的项目遇到了分屏显示的需求,特此来研究一下方法。大体效果如下所示。

Unity分屏显示效果

1.最简单粗暴的办法

复制4分相同的场景 包括NGUI界面和Cube对象 分别拖到4个不同的区域对调节摄像机的视图大小范围

这种方式 之前博客我已经讲到过

项目实际运行中 4分相同场景运行 机器爆卡 虽然项目大小其实也不大 场景文件大概150M 4个也就是600M左右 已经卡得宛如脑瘫病人 实在不行 只能想办法重新设计实现思路

2.场景运行中 一些场景是可以共用的 所以考虑使用摄像机的RendTexture来在其他区域复制显示

共用的场景 其他的元素在单独做处理

简单实验 先从一个画面开始

Unity分屏显示效果

一个RendTexture和一个shader文件的材质球(可在源代码处下载)

Unity分屏显示效果

此处可以改变图片的大小 避免分辨率过小而画面模糊

导入NGUI插件 不再赘述

随便放置两个Cube自行调节默认摄像机的镜头

Unity分屏显示效果

同时 再次复制一个摄像机 用来实时观察场景 将渲染图 拖拽到目标图片 位置

赋值Target后 这个摄像机的图像将不能显示到Game视图(原摄像机可以先禁用掉)

NGUI下边创建一个Texture文件 自行调节设置图片的大小和位置

Unity分屏显示效果

将渲染图片拖拽到Texture

观看Game视图 此场景的物体全部放到一个空物体Game1下边 然后制作一个预制体

即可看出与原摄像机看到的场景一致

接下来演示4个画面的效果 (由于2个画面比例失调 所以此处不予演示)

Unity分屏显示效果

新场景 拖拽复制一个Game1视图 然后复制4份 其他仅保留NGUI部分

调节第一个Game1的NGUI摄像机Rect

Unity分屏显示效果

其余同理 自行尝试调整

测试发现 虽然分为4个画面 但是每个画面的渲染图 会影响其他画面

比如 禁用Game1的Texture 但是开启Game2的 两个画面都会同事显示

具体原因不明 有待研究

源代码连接:链接: https://pan.baidu.com/s/1slJVdoD 密码: kqfa