版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34696203/article/details/79150056
NGUI 与3D模型图层显示
3D图形显示在NGUI界面上
最终效果A界面-B模型-A界面
参照文章:http://blog.csdn.net/chrisfxs/article/details/50537899 和http://blog.csdn.net/k46023/article/details/52738093
原理:控制模型和NGUI界面的RenderQueue
正文:
让你的3d模型能在摄像机里显示出来。调整UIRoot下的Camera的显示
2.添加如上图 创建两个plane 一个模型 在模型上挂载脚本
using UnityEngine;
using System.Collections;
public class ShowModel : MonoBehaviour {
public enum RenderType
{
FRONT,
BACK
}
public UIWidget m_target = null;
public RenderType m_type = RenderType.FRONT;
Renderer[] _renderers;
int _lastQueue = 0;
void Start()
{
_renderers = GetComponentsInChildren<Renderer>();
}
void FixedUpdate()
{
if (m_target == null || m_target.drawCall == null)
return;
int queue = m_target.drawCall.renderQueue;
queue += m_type == RenderType.FRONT ? 1 : -1;
if (_lastQueue != queue)
{
_lastQueue = queue;
foreach (Renderer r in _renderers)
{
r.material.renderQueue = _lastQueue;
}
}
}
}
3.让3D物体的
RenderQueue 处于两个Plane界面之间,比如我的PanelDown的RenderQueue是1000,PanelUP的是1005,两个UIPanel的RenderQueue值间隔一些,空出几个值用来设置给模型或粒子特效,很简单。,我们只是利用RenderQueue控制了渲染顺序,但是空间的深度关系还是在影响着在屏幕上显示的先后关系
4.所以 调整一下空间的深度关系