如上图,cube遮住了我自己建的类似坐标系的模型,我想让模型显示在最前面。
1.方法有多种
使用多个相机,可以参考:https://blog.csdn.net/u013749051/article/details/89220422
用RenderTexture,可参考这位大哥:https://www.e-learn.cn/content/qita/767202
还有就是修改渲染队列。
2.步骤
1.用C#或Shader脚本修改队列,Shader脚本修改可参照这位大哥:https://blog.csdn.net/candycat1992/article/details/37345251
用C#的话用:
m_meshRenderer.material.renderQueue += 2000; //m_meshRenderer是MeshRenderer类型
我的小工程用的代码是这样的,有的地方不关事
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PivotController : MonoBehaviour {
Transform m_tr, m_camera;
bool isVisible = true;
[SerializeField]
float pivotScale = 0.5f;
[SerializeField]
GameObject body;
// Use this for initialization
void Start () {
m_tr = transform;
m_tr.localPosition = body.transform.localPosition;
for (int i = 0; i < m_tr.childCount; i++)//修改该物体下的子物体的渲染队列
{
MeshRenderer m_meshRenderer = m_tr.GetChild(i).GetComponent<MeshRenderer>();
if (m_meshRenderer == null) continue;
if (m_meshRenderer.material == null) continue;
m_meshRenderer.material.renderQueue += 2000;
}
body.transform.SetParent(m_tr);
m_camera = Camera.main.transform;
}
// Update is called once per frame
void Update () {
if (isVisible)
m_tr.localScale = pivotScale * (m_tr.position - m_camera.position).magnitude * Vector3.one;//放大缩小窗口坐标轴大小不变
}
private void OnBecameVisible()
{
isVisible = true;
}
private void OnBecameInvisible()
{
isVisible = false;print("AAA");
}
}
然后给遮挡到我的坐标系模型的物体cube一个材质球,将其材质球的Rendering Mode改成Transparent或Fade
最后我的坐标系模型就不怕被cube挡住了。