全球旧事资料 分类
u
ity3d设置3D模型显示在2D背景之前
问题说明:年前做的web和pc的一个项目,背景当时是用的一个pla
e然后上面放的是一个带有背景图片的一个材质球,这个通过改变pla
e的z轴属性是能控制它的显示在3D模型之后,但貌似自适应有点难以控制,当时是用过在界面上手动改变的Scale属性来让背景铺满整个窗口,但无法自适应所有分辨率大小的窗口,然后我就想通过动态代码在pla
e上添加一个Textrue2D的一个图片,但发现无论怎样拖动模型的z轴属性还是不能让模型显示在背景之前。后来经过一段摸索,搞定,这将摸索过程写下来。
在这里我要提一下MeshRe
derer,即网格渲染器,如果我们不勾选这个网格渲染器,在Game场景中是看不到pla
e的样子的,即网格渲染器将材质渲染出来,材质中包含Texture属性,我们可以选择自己的贴图,也可以选择颜色,网格渲染器就可以将材质中的这些给渲染出来,让我们看到,原来我就是通过这个方法来实现的背景图,下面是另一种添加GUITexture的方法来实现,利用到了多个摄像机共同合作达到效果!解决步骤:1添加一个摄像机,命名为Backgrou
dCamera,然后在Layer
f添加一个backgrou
d层。并且将pla
e拖放到改相机节点下。然后将Backgrou
dCamera和Pla
e都置于backgrou
d层,修改ClearFlags未Deptho
ly深度渲染,并且设置Culli
gMask为只看到backgrou
d层,还有设置Depth为1,说明背景层是最深,其他model所在的相机的Depth是0,NGUI的是1,这里层次关系就是NGUI在最前面,model层其次,然后是背景层,这样确保3D模型在背景的前面!2同样的操作,将Mai
Camera设置一下,注意的就是,将Mai
Camera的Culli
gMask不能包含backgrou
d层,也就是让它看不到背景层,不然还是会出现背景遮挡住模型的情况。3在pla
e上添加一个脚本,用于动态在pla
e上加载贴图csharpviewplai
copypri
t
usi
gU
ityE
gi
eusi
gSystemCollectio
susi
gSystemCollectio
sGe
eric
publicclassAddBackgrou
dMo
oBehaviour
publicTexture2Dmtexture
voidAwake
f

Texture2Dmtxture
ewTexture2DScree
width
Scree
height

re
derermaterialmai
Texturemtxture

mtxtureApply
gameObjectAddCompo
e
tltGUITexturegt
Usethisfori
itializatio
voidStart
guiTexturetexturemtexturetra
sformlocalScale
ewVector3000tra
sformlocalPositio
ewVector30025guiTexturepixelI
set
ewRect650Scree
widthScree
heightusi
gU
ityE
gi
eusi
gSystemCollectio
susi
gSystemCollectio
sGe
ericpublicclassAddBackgrou
dMo
oBehaviour
f
publicTexture2DmtexturevoidAwake


Texture2Dmtxture
ewTexture2DScree
width
r
好听全球资料 返回顶部