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/_ ...
随机推荐
- HDU ACM 1071 The area 定积分计算
分析: 1.求抛物线方程F(x)=a*x^2+b*x+c: 2.求直线方程f(x)=k*x+b. 3.利用定积分计算F(x)-f(x)在x2到x3之间的面积. #include<iostream ...
- Windows8.1硬盘安装Ubuntu14.04双系统参考教程和多硬盘的注意事项[画画]
硬盘安装.无需光盘.U盘:Win8.1为主,Ubuntu14.04为辅,可将Windows或Ubuntu设置为开机默认启动项.在Ubuntu下可查看.操作Windows系统下的文件:适用于安装和14. ...
- (摘录)SQL Server 存储过程
文章摘录:http://www.cnblogs.com/hoojo/archive/2011/07/19/2110862.html SQL Server 存储过程 Transact-SQL中的存储过程 ...
- 【原创翻译】认识MVC设计模式:web应用开发的基础(实际编码篇)
原文地址:http://www.larryullman.com/2009/10/15/understanding-mvc-part-3/ 全系列INDEX [原创翻译]认识MVC设计模式:web应用开 ...
- [C++]四种方式求解最大子序列求和问题
问题 给定整数: A1,A2,-,An,求∑jk=iAk 的最大值(为方便起见,假设全部的整数均为负数,则最大子序列和为0) 比如 对于输入:-2,11,-4,13,-5,-2,答案为20,即从A2到 ...
- java反编译
反编译工具下载地址 http://download.csdn.net/detail/u011110110/8621653 反编译方法: 第一步:你先把下载的包的后缀名改成.zip第二步:到网上搜索de ...
- JCombobox组合框效果实现(转)
JCombobox是Swing中比较常用的控件,它显示一个项列表,扩展的是ListModel接口的模型,它的显示绘制器通过实现ListCellBenderer接口来绘制列表单元,下面介绍 ①普通应用例 ...
- DICOM医学图像处理:开源库mDCM与DCMTK的比較分析(一),JPEG无损压缩DCM图像
背景介绍: 近期项目需求,须要使用C#进行最新的UI和相关DICOM3.0医学图像模块的开发.在C++语言下,我使用的是应用最广泛的DCMTK开源库,在本专栏的起初阶段的大多数博文都是对DCMTK开源 ...
- A*算法进入
作者文章链接:http://www.policyalmanac.org/games/aStarTutorial.htm 启示式搜索:启示式搜索就是在状态空间中的搜索对每个搜索的位置进行评估,得到最好的 ...
- 【Web探索之旅】第一部分:什么是Web?
内容简介 1.Web探索之旅:开宗明义 2.第一部分第一课:什么是Web? 3.第一部分第二课:Web,服务和云 4.第一部分第三课:Web的诞生史 Web探索之旅:开宗明义 大家好. 我们这个系列课 ...