日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

unity节目素材ProceduralMaterial采用

發布時間:2025/3/17 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 unity节目素材ProceduralMaterial采用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有些效果substance物質的。然而,對房地產的材料可以不尋常Material方法調用,必須ProceduralMaterial打電話。

using UnityEngine; using System.Collections;public class TestProceduralMaterial : MonoBehaviour {public GameObject TestCube;public Texture2D tex;public ProceduralMaterial materialItem;void Start () {ProceduralMaterial substance = Object.Instantiate(materialItem) as ProceduralMaterial;//載入一個程序材質TestCube.renderer.sharedMaterial = substance;TestCube.renderer.sharedMaterial.SetTextureScale("_MainTex" , new Vector2(3,3));//改變uv,這是正常材質的方法ProceduralPropertyDescription[] inputs = substance.GetProceduralPropertyDescriptions();foreach(ProceduralPropertyDescription input in inputs)//獲得程序材質的屬性,有的屬性不知道是什么名字的時候能夠用這個獲得全部屬性名字和類型{Debug.Log("input type = "+input.type +" input name = "+input.name);}substance.SetProceduralBoolean("Battens",true);//設置boolsubstance.SetProceduralFloat("Battens_Amount_X",6f);//設置floatsubstance.SetProceduralColor("Wood_Color",new Color(0.8f,0.5f,0.2f));//設置顏色substance.SetProceduralTexture("Input",tex);//設置貼圖substance.RebuildTextures();//這句話是必須的應用全部改動。}// Update is called once per framevoid Update () {} }
當然還有SetProceduralEnum,SetProceduralVector。等設置屬性。依據須要設置。

我在載入的時候會出現這個問題


無效的程序材質。可是值都已經改動。圖也賦上去了,(2014-07-23加入備注。經過測試。這樣克隆出一個材質假設改動是不能夠使用的。由于這樣本身載入錯了。改動值的時候也有問題了,僅僅能一個程序材質僅僅能針對一種使用,我研究了下沒有好的new出一個新的程序材質的方法,大家有知道的方便告訴下。

)。不知為什么,在ProceduralMaterial和renderer.material的屬性也就是正常材質一起改動值的時候會出現這樣的情況,

我是為了同一個材質在不同的物體上有不同的參數。才去這樣設置Object.Instantiate(materialItem) as ProceduralMaterial;//載入一個程序材質,這樣保證不改動主材質球的屬性,能夠在不同物體上使用同一個substance通過調整值去實現不同的效果。假設我不使用這句話Object.Instantiate。去載入就沒事了。顯示正常。可是這樣僅僅能一個材質球相應一個物體。其它的物體再次這樣使用這個材質球的時候。改動參數的時候改動的是主材質球,這樣物體就全變了。變成你最后一次改動的參數效果。


這樣就會顯示出來,這個僅僅影響界面參數顯示,不影響實際效果,可是看著那個無效的程序材質invalid Procedural Material有些不爽,不知自己的值是否正確。是否自己想要的。我通過測試確實參數都對應的改動了,有哪位大俠知道請告知小弟。

最后說一下.renderer.sharedMaterial 和renderer.material的差別,我建議使用前者共享材質,可是他在本地開發的時候會出現故障。會影響根材質,這樣把自己project中的材質屬性就改動了,只是大家能夠使用平臺推斷,在本地project使用后者。公布各個平臺使用前者。由于后者每次調用都會new一個材質出來。太耗內存了。

using UnityEngine; using System.Collections;public class TestProceduralMaterial : MonoBehaviour {public GameObject TestCube;public Texture2D tex;public Material materialItem;void Start () {TestCube.renderer.sharedMaterial = materialItem;TestCube.renderer.sharedMaterial.mainTextureScale = new Vector2(3,3);//改變uv。這是正常材質的方法ProceduralMaterial substance = TestCube.renderer.sharedMaterial as ProceduralMaterial;//得到該物體的程序材質ProceduralPropertyDescription[] inputs = substance.GetProceduralPropertyDescriptions();foreach(ProceduralPropertyDescription input in inputs)//獲得程序材質的屬性,有的屬性不知道是什么名字的時候能夠用這個獲得全部屬性名字和類型{Debug.Log("input type = "+input.type +" input name = "+input.name);}substance.SetProceduralBoolean("Battens",true);//設置boolsubstance.SetProceduralFloat("Battens_Amount_X",6f);//設置floatsubstance.SetProceduralColor("Wood_Color",new Color(0.8f,0.5f,0.2f));//設置顏色substance.SetProceduralTexture("Input",tex);//設置貼圖substance.RebuildTextures();//這句話是必須的應用全部改動。}// Update is called once per framevoid Update () {} }
這種程序是沒有問題的,可是使用改動的都是根材質。這個方案是正確的。肯定沒錯

版權聲明:本文博主原創文章,博客,未經同意不得轉載。

總結

以上是生活随笔為你收集整理的unity节目素材ProceduralMaterial采用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。