如何在Unity3d开发中实现文字的渐隐效果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Unity3d开发中实现文字的渐隐效果相关的知识,希望对你有一定的参考价值。

这个首先需要看看你的文字是使用什么实现的。
据我所知文字可以用3DText,NGUI,UGUI,动画等等方法。
一般来说可以使用一个函数不断修改其透明度实现,如果是UI的话可以考虑用它的父panel来控制这个Text的显示。
参考技术A 您好,请问您是想知道如何在Unity3d开发中实现文字的渐隐效果吗?

虚拟仿真Unity3D中模型的渐隐渐现效果实现

推荐阅读

一、前言

最近项目上要实现一个模型渐隐渐现的效果,研究了一下,分享出来。

这个主要是用到了Shader(但不用学)和DoTween动画插件。

文中示例代码简单明了,感兴趣的小伙伴可以参考一下。

二、效果展示及源码下载


源码下载:

https://download.csdn.net/download/q764424567/20079897

三、正文

界面没啥好说的:

代码:

using DG.Tweening;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class TestDissolve : MonoBehaviour
{
    public GameObject model;
    private List<Material> materials = new List<Material>();
    public Button Btn_FadeOut;
    public Button Btn_FadeInt;

    private void Start()
    {
        //获取材质
        GetMeterials();
        Btn_FadeOut.onClick.AddListener(FadeOut);
        Btn_FadeInt.onClick.AddListener(FadeIn);
    }
    private void GetMeterials()
    {
        Material[] materals;
        MeshRenderer[] meshRendererer = model.GetComponentsInChildren<MeshRenderer>();
        foreach (var item in meshRendererer)
        {
            materals = item.materials;
            foreach (Material m in materals)
            {
                if (!materials.Contains(m))
                {
                    materials.Add(m);
                }
            }
        }
        for (int i = 0; i < materials.Count; i++)
        {
            Material m = materials[i];
            m.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha);
            m.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
            m.SetInt("_ZWrite", 0);
            m.DisableKeyword("_ALPHATEST_ON");
            m.EnableKeyword("_ALPHABLEND_ON");
            m.DisableKeyword("_ALPHAPREMULTIPLY_ON");
            m.renderQueue = 3000;
        }
    }

    private void FadeOut()
    {
        for (int i = 0; i < materials.Count; i++)
        {
            Material m = materials[i];
            Color color = m.color;
            m.DOColor(new Color(color.r, color.g, color.b, 0), 3f);
        }
    }

    private void FadeIn()
    {
        for (int i = 0; i < materials.Count; i++)
        {
            Material m = materials[i];
            Color color = m.color;
            m.DOColor(new Color(color.r, color.g, color.b,1), 3f);
        }
    }
}

效果:

四、后言

这个消融的shader看起来还是有点粗糙的,如果想要实现精细的shader效果,可以找shader程序员,不过对于虚拟仿真工业级别的显示还是可以用的。

以上是关于如何在Unity3d开发中实现文字的渐隐效果的主要内容,如果未能解决你的问题,请参考以下文章

虚拟仿真Unity3D中模型的渐隐渐现效果实现

unity3d 场景切换 时的渐隐渐显效果是怎么实现的啊!!

Unity3D中UGUI不使用DOTween制作渐隐渐现效果

前端模拟手机屏幕图片渐隐渐现效果实现

UGUI中怎么使用类似NGUI中tweenalpha提供的渐隐效果

虚拟仿真实现Slider控制模型的从上到下消失