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

Unity中C#如何訪問并修改Shader材質(zhì)

這篇具有很好參考價值的文章主要介紹了Unity中C#如何訪問并修改Shader材質(zhì)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


前言

我們寫好Shader后,很多效果是需要結(jié)合腳本來控制顯示的。我們在這篇文章中,使用C#腳本來訪問修改材質(zhì)中的屬性,來體驗一下腳本怎么控制Shader材質(zhì)在游戲中互動時變化


一、我們用點擊按鈕來改變Shader傳入的顏色值

1、在渲染GUI時,繪制一個按鈕

  • 我們 OnGUI 這個生命周期函數(shù)中,進行操作

void OnGUI()
{
}

  • 使用GUI.Button(position,text);可以繪制一個按鈕

2、我們使用一個公共的成員變量存儲需要進行修改的游戲?qū)ο?/h3>

public GameObject Fox;

  • 把我們需要修改材質(zhì)的對象賦予這個

unity 設(shè)置材質(zhì)球參數(shù) c#,Unity,unity,c#,材質(zhì),游戲引擎

  • 因為我們模型使用的是 SkinnedMeshRenderer 組件,所以在Start中獲取該組件
    unity 設(shè)置材質(zhì)球參數(shù) c#,Unity,unity,c#,材質(zhì),游戲引擎

void Start()
{
skr = Fox.GetComponentInChildren();
}

3、最后給繪制的按鈕點擊增加邏輯即可

void OnGUI()
{
if (GUI.Button(new Rect(10, 10, 150, 50), “被擊”))
{
Color color = Color.red;
skr.sharedMaterial.SetColor(“_Color”, color);
}
}


二、測試使用的代碼

最終效果:

unity 設(shè)置材質(zhì)球參數(shù) c#,Unity,unity,c#,材質(zhì),游戲引擎文章來源地址http://www.zghlxwxcb.cn/news/detail-762574.html

1、Shader代碼:

//角色消融效果
Shader "MyShader/P2_5_5"
{
    Properties
    {
        //使用這個標(biāo)簽,可以使外部暴露屬性,有標(biāo)題
        [Header(Base)]
        [NoScaleOffset]_MainTex ("Texture", 2D) = "white" {}
        _Color("Color",Color) = (1,1,1,1)
        _Clip("Clip",Range(0,1)) = 0
        //使用這個標(biāo)簽可以 在兩行暴露屬性之間加 間隙
        [Space(10)]
        [Header(Dissolve)]
        [Toggle]_DissolveEnable("Dissolve Enable",int) = 0
        _DissolveTex("DissolveTex",2D) = "black"{}

        [NoScaleOffset]_RampTex("RampTex(RGB)",2D) = "black" {}

    }
    SubShader
    {
        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            //定義消融變體開關(guān)
            #pragma shader_feature _ _DISSOLVEENABLE_ON 
            #include "UnityCG.cginc"
            
            sampler2D _MainTex;
            fixed4 _Color;
            float _Clip;
            sampler2D _DissolveTex; 
            //這個四維向量,xyzw分別表示 Tilling 和 Offset 的 xy ,命名方式 在紋理名 后加 _ST
            float4 _DissolveTex_ST;


            //因為 在使用漸變紋理時,只使用了 漸變紋理的 u 坐標(biāo),所以把  sampler2D 換位 sampler
            sampler _RampTex;

            struct appdata
            {
                float4 vertex : POSITION;
                float4 uv : TEXCOORD0;
            };

            struct v2f
            {
                float4 uv : TEXCOORD0;
                float4 pos : SV_POSITION;
            };

            v2f vert (appdata v)
            {
                v2f o;
                o.pos = UnityObjectToClipPos(v.vertex);
                
                //為了減少傳入的值 ,所以就不創(chuàng)建新變量來存儲,而是把 uv 改為  四維向量 來用
                //使用 o.uv 的 xy 來存放 原人物貼圖
                //使用 o.uv 的 zw 來存放 噪波貼圖縮放 和 偏移 后的值
                o.uv.xy = v.uv.xy;
                //o.uv.zw = v.uv * _DissolveTex_ST.xy + _DissolveTex_ST.zw;

                o.uv.zw = TRANSFORM_TEX(v.uv,_DissolveTex);
                return o;
            }

            fixed4 frag (v2f i) : SV_Target
            {
                fixed4 col = tex2D(_MainTex, i.uv.xy);
                col *= _Color;
                #if _DISSOLVEENABLE_ON
                //外部獲取的 紋理 ,使用前都需要采樣
                fixed4 dissolveTex = tex2D(_DissolveTex,i.uv.zw);
                
                //片段的取舍
                clip(dissolveTex.r -  _Clip);

                //進行歸一化
                fixed4 dissolveValue = saturate((dissolveTex.r - _Clip) / (_Clip + 0.1 - _Clip));

                fixed4 rampTex = tex1D(_RampTex,dissolveValue.r);

                col += rampTex;
                #endif
                
                return col;
            }
            ENDCG
        }
    }
}



2、C#腳本

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

//C#如何訪問并且修改材質(zhì)屬性
public class P2_5_5 : MonoBehaviour
{
    #region [成員變量]

    public GameObject Fox;
    private SkinnedMeshRenderer skr;

    #endregion
    #region [Start/Update]
    void Start()
    {
        skr = Fox.GetComponentInChildren<SkinnedMeshRenderer>();
    }
    void Update()
    {
        
    }
    #endregion
    #region [GUI]
    private void OnGUI()
    {
        if (GUI.Button(new Rect(10, 10, 150, 50), "被擊"))
        {
            Color color = Color.red;
            skr.sharedMaterial.SetColor("_Color", color);
        }
    }
    #endregion
}

到了這里,關(guān)于Unity中C#如何訪問并修改Shader材質(zhì)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Unity中Shader的Standard材質(zhì)解析(二)

    Unity中Shader的Standard材質(zhì)解析(二)

    Unity中Shader的Standard材質(zhì)解析(二),對 Standard 的 PBR 的 GI 進行解析 Unity中Shader的Standard材質(zhì)解析(一) #include “CGInclude/MyPhysicallyBasedRendering.cginc” 整理 LightingStandard_GI1(o, giInput, gi); 中的數(shù)據(jù) Unity_GlossyEnvironmentData表示GI中的反射準(zhǔn)備數(shù)據(jù) 準(zhǔn)備好反射數(shù)據(jù)后,計算得出GI中的

    2024年02月04日
    瀏覽(20)
  • 【Unity Shader】從入門到著魔(1)基本概念:什么是網(wǎng)格?材質(zhì)?Shader?

    【Unity Shader】從入門到著魔(1)基本概念:什么是網(wǎng)格?材質(zhì)?Shader?

    如上圖,模型的三角形面就叫做網(wǎng)格(Mesh),網(wǎng)格的本質(zhì)是一堆頂點數(shù)據(jù)的規(guī)則排序,在Unity和UE中由三角形表示,Maya等DCC軟件(Digital Content Creation)中則通常由四邊形表示(倆個三角形剛好組成一個四邊形)。 在Unity中我們新建一個Cube,

    2024年02月09日
    瀏覽(23)
  • Unity | Shader(著色器)和material(材質(zhì))的關(guān)系

    Unity | Shader(著色器)和material(材質(zhì))的關(guān)系

    一、前言 在上一篇文章中 【精選】Unity | Shader基礎(chǔ)知識(什么是shader)_unity shader_菌菌巧樂茲的博客-CSDN博客 我們講了什么是shader,今天我們講一下shder和material的關(guān)系 二、在unity中shader的本質(zhì) unity中,shader就是一串代碼,如下圖shader(就是一個平平無奇的shader) 但是,這個sh

    2024年02月02日
    瀏覽(22)
  • 【Unity Shader】從入門到領(lǐng)悟(1)基本概念:什么是網(wǎng)格?什么是材質(zhì)和Shader?

    【Unity Shader】從入門到領(lǐng)悟(1)基本概念:什么是網(wǎng)格?什么是材質(zhì)和Shader?

    如上圖,模型的三角形面就叫做網(wǎng)格(Mesh),網(wǎng)格的本質(zhì)是一堆頂點數(shù)據(jù)的規(guī)則排序,在Unity和UE中由三角形表示,Maya等DCC軟件(Digital Content Creation)中則通常由四邊形表示(倆個三角形剛好組成一個四邊形)。 在Unity中我們新建一個Cube,

    2024年02月06日
    瀏覽(20)
  • 【Unity Shader】從入門到感慨(1)基本概念:什么是網(wǎng)格?什么是材質(zhì)和Shader?

    【Unity Shader】從入門到感慨(1)基本概念:什么是網(wǎng)格?什么是材質(zhì)和Shader?

    如上圖,模型的三角形面就叫做網(wǎng)格(Mesh),網(wǎng)格的本質(zhì)是一堆頂點數(shù)據(jù)的規(guī)則排序,在Unity和UE中由三角形表示,Maya等DCC軟件(Digital Content Creation)中則通常由四邊形表示(倆個三角形剛好組成一個四邊形)。 在Unity中我們新建一個Cube,

    2024年02月11日
    瀏覽(21)
  • 【unity shader】水體渲染基礎(chǔ)-基于texture distortion的流體流動材質(zhì)

    【unity shader】水體渲染基礎(chǔ)-基于texture distortion的流體流動材質(zhì)

    當(dāng)液體靜止時,它在視覺上與固體沒有太大區(qū)別。 但大多數(shù)時候,我們的性能不一定支持去實現(xiàn)特別復(fù)雜的水物理模擬, 需要的只是在常規(guī)的靜態(tài)材料的表面上讓其運動起來。我們可以對網(wǎng)格的 UV 坐標(biāo)實現(xiàn)動態(tài)變化,從而讓表面的紋理效果實現(xiàn)變形的動態(tài)變化。 1.1. uv實時

    2024年02月03日
    瀏覽(28)
  • 《Unity的URP項目中使用自定義shader導(dǎo)致材質(zhì)消失的解決辦法》

    《Unity的URP項目中使用自定義shader導(dǎo)致材質(zhì)消失的解決辦法》

    ????????在Unity中使用URP時,會有需求使用自定義的一些shader來實現(xiàn)特殊效果,這時如果我們直接使用新建材質(zhì)與無光照著色器(Unlit shader),可能會發(fā)生一個對于新手而言意料之外的問題—— 物體!消失了! ????????打開你正在使用的的 通用渲染器(Universal Rendere

    2024年02月06日
    瀏覽(194)
  • Unity極坐標(biāo)Shader特效,以及使用Instanced Property實現(xiàn)相同材質(zhì)不同參數(shù)

    Unity極坐標(biāo)Shader特效,以及使用Instanced Property實現(xiàn)相同材質(zhì)不同參數(shù)

    先看看效果 Unity極坐標(biāo)Shader特效 有時候我們需要在場景中擺放一些熱點,用戶點擊之后出現(xiàn)互動,當(dāng)然實現(xiàn)這個功能的方法有很多,作為一名程序員,當(dāng)然是要用最簡單的實現(xiàn)。用shader程序化實現(xiàn)它。 啥是極坐標(biāo) 極坐標(biāo),又稱極座標(biāo)系。它是一種表示平面直角坐標(biāo)系中點的

    2024年02月09日
    瀏覽(22)
  • unity游戲破解 修改粒子材質(zhì)

    unity游戲破解 修改粒子材質(zhì)

    游戲漢化 遇到一個 比較文化差異的 問題? 最近從google play 逆向一個殺人游戲 準(zhǔn)備漢化 處理 其中游戲殺人的效果 血是紅色的 那這時候小朋友的家長就要說了呀?。。。。。?哎呀? 這游戲太血腥 太暴力啦 不行 不能讓娃娃玩 ?。。?! 那沒辦法呀 改 改 改 首先呢 這血的效果

    2023年04月08日
    瀏覽(32)
  • 隨筆-Unity中修改Spine材質(zhì)

    隨筆-Unity中修改Spine材質(zhì)

    ? ? ? ? 我們在Unity中使用Spine動畫時,往往需要在材質(zhì)上添加一些效果,比如描邊、閃光等等。 ? ? ?????????這些效果其實在Spine插件中就給我們提供好了對應(yīng)的Shader,路徑分別是: Spine/Outline/Skeleton、Spine/Skeleton Fill。 雖然有插件上給我提供好了這些常用的Shader,單獨

    2024年02月11日
    瀏覽(73)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包