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);//设置bool
substance.SetProceduralFloat("Battens_Amount_X",6f);//设置float
substance.SetProceduralColor("Wood_Color",new Color(0.8f,0.5f,0.2f));//设置颜色
substance.SetProceduralTexture("Input",tex);//设置贴图
substance.RebuildTextures();//这句话是必须的应用全部改动。
} // Update is called once per frame
void Update () { }
}
当然还有SetProceduralEnum,SetProceduralVector。等设置属性。依据须要设置。
我在载入的时候会出现这个问题
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaXRvbGZu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
无效的程序材质。可是值都已经改动。图也赋上去了,(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);//设置bool
substance.SetProceduralFloat("Battens_Amount_X",6f);//设置float
substance.SetProceduralColor("Wood_Color",new Color(0.8f,0.5f,0.2f));//设置颜色
substance.SetProceduralTexture("Input",tex);//设置贴图
substance.RebuildTextures();//这句话是必须的应用全部改动。
} // Update is called once per frame
void Update () { }
}
这种程序是没有问题的,可是使用改动的都是根材质。这个方案是正确的。肯定没错
版权声明:本文博主原创文章,博客,未经同意不得转载。
unity节目素材ProceduralMaterial采用的更多相关文章
- 如何用Photoshop画一个发光金币(unity游戏素材教程)
做好的发光金币预览图: 以下为如何用Photoshop画一个发光金币教程: [1]如上图1-2,新建,名称改为Coin,宽度20像素,高度20像素,分辨率72,背景白色: [2]使用Alt+Shift ...
- MXF素材文件交换格式深入研究
MXF素材文件交换格式深入研究 2012-09-03 | 访问次数:262 | 新闻来源:电科网 [摘要]DCI规定数字电影需采用MXF封装音视频等节目素材内容.为了深 ...
- 聊聊Unity项目管理的那些事:Git-flow和Unity
0x00 前言 目前所在的团队实行敏捷开发已经有了一段时间了.敏捷开发中重要的一个话题便是如何对项目进行恰当的版本管理.项目从最初使用svn到之后的Git One Track策略再到现在的GitFlo ...
- 刨根问底U3D---从Profile中窥探Unity的内存管理
这篇文章包含哪些内容 这篇文章从Unity的Profile组件入手,来探讨一下Unity在开发环境和正式环境中的内存使用发面的一些区别, 并且给出了最好控制内存的方法(我想你已经知道了...Prefa ...
- Moving in Unity
转自:http://angryant.com/2014/03/07/Moving-in-Unity/ ,详细描述了物体在unity中移动的几种方式,并且给出了代码描述,对加深对Unity理解很有帮助, ...
- 从Profile中窥探Unity的内存管理
刨根问底U3D---从Profile中窥探Unity的内存管理 这篇文章包含哪些内容 这篇文章从Unity的Profile组件入手,来探讨一下Unity在开发环境和正式环境中的内存使用发面的一些区别, ...
- Unity引擎与C#脚本简介
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 由 QQ会员技术团队 发布在云+社区 1. Unity编辑器基础 从原理上讲,游戏开发就是将一系列变动的场景呈现在玩家面前,并根据玩家的输入 ...
- unity coroutine
http://gad.qq.com/article/detail/695 使用Unity 3D引擎的同学,对于Coroutine(协程)的使用肯定也是非常熟悉的了.然而Coroutine背后的技术以及 ...
- iOS_直播类app_HTTP Live Streaming
http://www.2cto.com/kf/201606/513980.html https://developer.apple.com/library/ios/technotes/tn2224/_ ...
随机推荐
- 求pi 的公式
pi = 3.1415926..... 下面用c 语言来求解PI 现有公式 (pi*pi)/6 = 1 + 1/(2*2) + 1/(3*3) + ... + 1/(n*n); #include &l ...
- Android KitKat 4.4 Wifi移植AP模式和网络共享的调试日志
Tethering技术在移动平台上已经运用的越来越广泛了.它能够把移动设备当做一个接入点,其它的设备能够通过Wi-Fi.USB或是Bluetooth等方式连接到此移动设备.在Android中能够将Wi ...
- HTML+CSS样式设置——CSS一学就会
HTML+CSS样式设置 CSS:(Cascading Style Sheets)层叠样式设置表. 网页的展示效果跟其排版有非常大的关系.排版则主要依靠CSS来设置.调节. 以下说CSS与HTML的联 ...
- ContentProvider的使用
这方面的资料应该网上已经很多了,我在这里只是做简单的总结就行了. 如题:ContentProvider是android的内容提供器,可以为应用程序提供各种的数据,例如数据表,txt文件,xml文件等等 ...
- Android Volley 之自定义Request
转载标明出处:http://blog.csdn.net/lmj623565791/article/details/24589837 今天群里一哥们需要自定义Volley的Request的例子,于是产生 ...
- 【原创】一个基于简单剪枝的DFS解数独程序
问题来源:leetCode Sudoku Solver Write a program to solve aSudoku puzzle by filling the empty cells. Empt ...
- C3P0在多线程下的maxPoolSize配置
ETL工具完毕的差点儿相同了.今天遇到一个问题.就是给C3P0配置了maxPoolSize为10.目的是想让整个应用同一时候获得的最大的Connection个数为10,可是在測试应用的这一部分之后,发 ...
- Python 清理HTML标签相似PHP的strip_tags函数功能(二)
没有发现Python 有现成的类似功能模块,所以昨天写了个简单的 strip_tags 但还有些问题,今天应用到採集上时进行了部分功能的完好, 1. 对自闭和标签处理 2. 以及对标签參数的过滤 fr ...
- Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.ClassVisitor
1.错误描写叙述 信息: Setting autowire strategy to name 2014-7-13 1:37:43 org.apache.struts2.spring.StrutsSpr ...
- List、Map和Set实现类
List.Map和Set实现类 1.List实现类 (1)ArrayList (2)Vector 2.Map实现类 (1)HashMap (2)Hashtable 3.Set实现类 (1)HashSe ...