unity3d UGUI多层级面板显示多个3D模型

       当前项目,直接用3d模型放到ui上,由于同时会出现多个界面堆叠,存在多个模型的情况,层级处理相当麻烦。

所以,下面就记录下采用Rendertexture方式显示多模型的策略。

       主要的想法就是用一个独立camera获取指定CullingMask的显示,利用Rendertexture获取相机图像,然后再使用RawImamge显示到UI上。

      上面的camera,Rendertexture,RawImamge显示单个模型的方式,就不做过多介绍了。下面主要来说一下实现多个模型显示的思路。

1.如图所示,可以将Rendertexture预设成2*3,每个单元格可以存放一个模型。unity3d UGUI多层级面板显示多个3D模型_第1张图片

 2.将上面的Rendertexture关联给一个RawImage控件,利用uvRect对Rendertexture进行图像裁切,获取某一个区域的模型成像。

unity3d UGUI多层级面板显示多个3D模型_第2张图片

 

 

    public void SetUvRect(float x, float y, float w, float h)
    {
        if (raw == null)
        {
            raw = gameObject.GetComponent();
        }
        raw.uvRect = new Rect(x, y, w, h);
        raw.SetNativeSize();
    }

3.管理2*3单元格,给每个单元格保存一个key,如果当前模型不显示了,放入缓存池,并移出2*3位置,将对应的单元格tag设置为空置。

unity3d UGUI多层级面板显示多个3D模型_第3张图片

unity3d UGUI多层级面板显示多个3D模型_第4张图片

 

该方法,有点缺点,就是模型图片的分辨率只和相机成像有关,导致预制的Rendertexture高宽过大。后面视情况看看有没有优化空间,当前项目同时显示的模型会超过5个,而大小也接近半屏的,所以设置的分辨率有点大了。

 

只为记录一下,多个思路。

你可能感兴趣的:(Unity3d)