有些效果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采用的更多相关文章

  1. 如何用Photoshop画一个发光金币(unity游戏素材教程)

    做好的发光金币预览图: 以下为如何用Photoshop画一个发光金币教程: [1]如上图1-2,新建,名称改为Coin,宽度20像素,高度20像素,分辨率72,背景白色: [2]使用Alt+Shift ...

  2. MXF素材文件交换格式深入研究

    MXF素材文件交换格式深入研究   2012-09-03 | 访问次数:262 | 新闻来源:电科网               [摘要]DCI规定数字电影需采用MXF封装音视频等节目素材内容.为了深 ...

  3. 聊聊Unity项目管理的那些事:Git-flow和Unity

    0x00 前言 目前所在的团队实行敏捷开发已经有了一段时间了.敏捷开发中重要的一个话题便是如何对项目进行恰当的版本管理.项目从最初使用svn到之后的Git One Track策略再到现在的GitFlo ...

  4. 刨根问底U3D---从Profile中窥探Unity的内存管理

    这篇文章包含哪些内容 这篇文章从Unity的Profile组件入手,来探讨一下Unity在开发环境和正式环境中的内存使用发面的一些区别, 并且给出了最好控制内存的方法(我想你已经知道了...Prefa ...

  5. Moving in Unity

    转自:http://angryant.com/2014/03/07/Moving-in-Unity/ ,详细描述了物体在unity中移动的几种方式,并且给出了代码描述,对加深对Unity理解很有帮助, ...

  6. 从Profile中窥探Unity的内存管理

    刨根问底U3D---从Profile中窥探Unity的内存管理 这篇文章包含哪些内容 这篇文章从Unity的Profile组件入手,来探讨一下Unity在开发环境和正式环境中的内存使用发面的一些区别, ...

  7. Unity引擎与C#脚本简介

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 由 QQ会员技术团队 发布在云+社区 1. Unity编辑器基础 从原理上讲,游戏开发就是将一系列变动的场景呈现在玩家面前,并根据玩家的输入 ...

  8. unity coroutine

    http://gad.qq.com/article/detail/695 使用Unity 3D引擎的同学,对于Coroutine(协程)的使用肯定也是非常熟悉的了.然而Coroutine背后的技术以及 ...

  9. iOS_直播类app_HTTP Live Streaming

    http://www.2cto.com/kf/201606/513980.html https://developer.apple.com/library/ios/technotes/tn2224/_ ...

随机推荐

  1. Android在浏览器启动APP

    要想在浏览器启动APP的方法例如以下: 在须要跳转的ACTIVITY中加入intent-filter的相关信息: <intent-filter>     <data android: ...

  2. HDU-3502-Huson&#39;s Adventure Island(BFS+如压力DP)

    Problem Description A few days ago, Tom was tired of all the PC-games, so he went back to some old F ...

  3. IOS设计模式学习(21)享元

    1 前言 在面向对象软件设计中,利用公共对象不仅能节省资源还能提高性能.共享的对象只能提供某些内在的信息,而不能用来识别对象.专门用于设计可共享对象的一种设计模式叫做享元模式(Flyweight pa ...

  4. sails 相关文章

    Node 框架之sails   http://cnodejs.org/topic/555c3c82e684c4c8088a0ca1

  5. Asp.NET MVC3 使用 SignalR 实现推(持续)

    一,Persistent Connection 演示示例教程 1.实现server端代码 1),编写server PersistentConnection 代码 项目中 SignalR 文件夹下创建 ...

  6. mod_python模块安装

    两.mod_python 1.性能 使用mod_python的主要优势在于比传统CGI更高的性能. 一个測试,使用在Pentium 1.2GHz的机器上执行Red Hat Linux 7.3.使用4种 ...

  7. MongoDB最新版本3.2.9下载地址

    https://downloads.mongodb.com/win32/mongodb-win32-x86_64-enterprise-windows-64-3.2.9.zip?_ga=1.22538 ...

  8. 指定为文件头部Expires要么Cache-Control

    Cache-Control :private,no-cache.must-revalidate,max-age Expires指定页面过期时间 response.setContentType(&quo ...

  9. 【C语言探索之旅】 第一部分第六课:条件表达式

    内容简介 1.课程大纲 2.第一部分第六课:条件表达式 3.第一部分第七课预告:循环语句 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. ...

  10. Java 解析 lnk 快捷方式文件的方法(转)

    package file.extendsion; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.F ...