国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Unity中特效透明度動態(tài)設置

這篇具有很好參考價值的文章主要介紹了Unity中特效透明度動態(tài)設置。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

在Unity開發(fā)中,特效的透明度無法直接使用代碼或者動畫直接控制很不方便,便制作了一個一個腳本,專用來控制一個節(jié)點下的所有子節(jié)點的透明度。

using System;
using System.Collections;
using System.Collections.Generic;
using System.Threading;
using UnityEngine;

public class UIParticleSystemTweenHelper : MonoBehaviour
{
    // Start is called before the first frame update
    [Range(0,1)]
    public float alpha = 0f;
    //????
    private float lastAlpha = -1f;
    private List<ParticleSystemAlpha> colorList = null;

    void Start()
    {
        Init();
    }

    private void Init()
    {
        colorList = new List<ParticleSystemAlpha>();
        AddColorData();
    }

    public void ForceInit()
    {
        Init();
    }
    void AddColorData()
    {
        ParticleSystemAlpha psa = new ParticleSystemAlpha();
        if (psa.psr == null)
        {
            psa.psr = GetComponentsInChildren<ParticleSystemRenderer>(true);
            float[] tempAlpha_1 = new float[psa.psr.Length];
            float[] tempAlpha_2 = new float[psa.psr.Length];
            for (int i = 0; i < psa.psr.Length; i++)
            {
                if (psa.psr[i].gameObject != null || psa.psr[i].enabled)
                {
                    float temp_alpha = 0;
                    if (psa.psr[i].sharedMaterial && psa.psr[i].sharedMaterial.HasColor("_Color_Water"))
                    {
                        temp_alpha = psa.psr[i].sharedMaterial.GetColor("_Color_Water").a;
                        tempAlpha_2[i] = temp_alpha;
                    }
                    if (psa.psr[i].sharedMaterial && psa.psr[i].sharedMaterial.HasColor("_TintColor"))
                    {
                        temp_alpha = psa.psr[i].sharedMaterial.GetColor("_TintColor").a;

                    }
                    else if (psa.psr[i].sharedMaterial && psa.psr[i].sharedMaterial.HasColor("_Color"))
                    {
                        temp_alpha = psa.psr[i].sharedMaterial.GetColor("_Color").a;
                    }
                    if (temp_alpha >= 1)
                    {
                        temp_alpha = 1;
                    }
                    tempAlpha_1[i] = temp_alpha;
                }
            }
            if (psa.alphas_1 == null)
            {
                psa.alphas_1 = tempAlpha_1;
            }
            if (psa.alphas_2 == null)
            {
                psa.alphas_2 = tempAlpha_2;
            }
        }
        colorList.Add(psa);
    }
    private void OnEnable(){Update();}
    // Update is called once per frame
    void Update()
    {
        if (alpha <= 0 || colorList.Count == 0 || Mathf.Approximately(lastAlpha, alpha)) return;
        foreach (ParticleSystemAlpha psa in colorList)
        {
            ParticleSystemRenderer[] psr = psa.psr;
            float[] alphas_1 = psa.alphas_1;
            float[] alphas_2 = psa.alphas_2;
            for (int i = 0; i < psr.Length; i++)
            {
                if(psr[i].gameObject != null || psr[i].enabled)
                {
                    if (psa.psr[i].sharedMaterial && psa.psr[i].sharedMaterial.HasColor("_Color_Water"))
                    {
                        Color c = psr[i].sharedMaterial.GetColor("_Color_Water");
                        psr[i].sharedMaterial.SetColor("_Color_Water", new Color(c.r, c.g, c.b, alphas_2[i] * alpha));
                    }
                    if (psr[i].sharedMaterial && psr[i].sharedMaterial.HasColor("_TintColor"))
                    {
                        Color c = psr[i].sharedMaterial.GetColor("_TintColor");
                        psr[i].sharedMaterial.SetColor("_TintColor", new Color(c.r, c.g, c.b, alphas_1[i] * alpha));
                    }
                    else if (psr[i].sharedMaterial && psr[i].sharedMaterial.HasColor("_Color"))
                    {
                        Color c = psr[i].sharedMaterial.GetColor("_Color");
                        psr[i].sharedMaterial.SetColor("_Color", new Color(c.r, c.g, c.b, alphas_1[i] * alpha));
                    }
                }
            }
        }
        lastAlpha = alpha;
    }
    private void OnDestroy()
    {
        colorList.Clear();
        colorList = null;
    }
}
public class ParticleSystemAlpha
{
    public ParticleSystemRenderer[] psr = null;
    public float[] alphas_1 = null;
    public float[] alphas_2 = null;
}

unity 粒子透明,工具,Unity,C#,unity,游戲引擎,c#

?在其父節(jié)點添加即可

unity 粒子透明,工具,Unity,C#,unity,游戲引擎,c#

?文章來源地址http://www.zghlxwxcb.cn/news/detail-611353.html

到了這里,關于Unity中特效透明度動態(tài)設置的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • ObjectArx 設置填充透明度問題

    ObjectArx 設置填充透明度問題

    初始化透明度參數(shù)AcCmTransparency對象時,需要調用setAlpha設置透明度值,這里傳入的值是0 255,但cad特性面板上顯示的是0 90,且經(jīng)過測試發(fā)現(xiàn),傳入值與特性面板顯示的值也是不同的,比如傳入90,顯示64,百度搜索了個寂寞,最后還是在谷歌找到了答案,原來設置的值和特性面

    2024年02月15日
    瀏覽(35)
  • WPF 控件設置透明度的方法

    WPF 控件設置透明度的方法

    方法一:通過 Opacity 屬性設置背景色透明度。范圍從0-1,0表示完全透明,看不見。 ? ? 通過 Opacity 屬性去改變控件透明度 會影響子控件的透明度,是因為Opacity屬性是在UIElement 類(以及Brush基類)中定義,所有元素都具有該屬性; 界面如下圖圖? 方法二:通過Background 屬性的

    2024年02月11日
    瀏覽(26)
  • uniapp中map組件打點/地圖上顯示圓/設置map圓的透明度(十六進制顏色透明度)

    uniapp中map組件打點/地圖上顯示圓/設置map圓的透明度(十六進制顏色透明度)

    一般來說我們都是想設置成透明的圓,十六進制的后兩位表示顏色 eg:#0000006A 6A就是表示透明度,數(shù)字越大透明度越高

    2024年02月12日
    瀏覽(24)
  • VTK————3D模型的旋轉、交互、透明度設置

    旋轉模型的話可以用到以下例程,但是每次設置選擇坐標時,都是累加的。可以通過SetOrientation來將模型方向設為初試方向。如果三個坐標都使用較大值來進行旋轉,那么由于累加的特性。模型會在空間內進行大幅度的旋轉和位移,這是需要注意的。 也可以通過設置interacto

    2024年02月10日
    瀏覽(17)
  • Three.js 設置模型材質紋理貼圖和修改材質顏色,材質透明度,材質網(wǎng)格

    Three.js 設置模型材質紋理貼圖和修改材質顏色,材質透明度,材質網(wǎng)格

    1 traverse (模型循環(huán)遍歷方法) 2. THREE.TextureLoader(用于加載和處理圖片紋理) 3. THREE.MeshLambertMaterial(用于創(chuàng)建材質) 4. getObjectByProperty(通過材質的屬性值獲取材質信息) 在上一篇 Three.js加載外部glb,fbx,gltf,obj 模型文件 的文章基礎上加入onSetSystemModelMap (設置模型材質方法

    2024年02月13日
    瀏覽(28)
  • matlab中畫有重影的機器人運動過程【給另一個機器人設置透明度】

    matlab中畫有重影的機器人運動過程【給另一個機器人設置透明度】

    1、前言如題 2、參考連接如下 How to plot two moving robot in the same figure and change one of them transparency? - MATLAB Answers - MATLAB Central (mathworks.cn)3、代碼:【找到figure中對應對象并設置屬性】 4、結果【同樣的軌跡,實影的先運動幾個步數(shù),虛影后續(xù)運動】 ? ?

    2024年02月17日
    瀏覽(27)
  • iOS 使用Hex色值設置顏色(可設置透明度使用4個字節(jié)色值賦值)

    簡單來說就是用十六機制來表示三原色,三原色不同強度組合出不同顏色; 詳見:Hex色值是什么(含透明度) iOS不如 Kotlin 有API可直接支持HEX賦值,得自己寫個擴展方法 普通無透明度代碼如下: 帶透明度的代碼如下(注意此處解析順序是RGBA,如仿Kotlin可改為ARGB):

    2024年04月27日
    瀏覽(20)
  • 透明度和透明貼圖制作玻璃水杯

    透明度和透明貼圖制作玻璃水杯

    模型透明度是指一個物體或模型在呈現(xiàn)時的透明程度。它決定了物體在渲染時,是否顯示其后面的物體或背景。 在圖形渲染中,透明度通常以0到1之間的值表示。值為0表示完全透明,即物體不可見,背景或其他物體完全穿透;值為1表示完全不透明,即物體完全可見,沒有透

    2024年02月07日
    瀏覽(18)
  • 【CSS 23】顏色 RGBA HSLA 不透明度opacity 線性漸變 徑向漸變 透明度漸變 重復漸變

    顏色 CSS 支持 140 多種顏色名稱,以及十六進制值、RGB 值、RGBA 值、HSL 值、HSLA 值和不透明度 RGBA顏色 RGBA 顏色值是 RGB 顏色值的擴展,帶有 alpha 通道 - 該通道規(guī)定顏色的不透明度 RGBA 顏色值是這樣規(guī)定的:rgba(red, green, blue, alpha) alpha 參數(shù)是介于 0.0(完全透明)和 1.0(完全不

    2024年02月13日
    瀏覽(27)
  • Unity半透明特效原理講解(為什么半透明設置渲染順序和深度寫入這么重要)

    Unity半透明特效原理講解(為什么半透明設置渲染順序和深度寫入這么重要)

    最近要實現(xiàn)一個透明的特效,所以更仔細的去學了一下。但是網(wǎng)上更多的是用文字講解,實驗做的相對較少,因此我在這里會更多的附上實驗效果展示和結論。若有理解錯誤的地方,歡迎討論。 攝像頭看向兩個Cube,紅Cube在前,藍Cube在后 效果: 解析: 紅藍Cube使用相同的S

    2024年02月06日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包