unity 里面有些unity3d 材质球的树不能动怎么办

Unity 游戏开发技巧集锦之材质的应用的创建反射材质
Unity 游戏开发技巧集锦之材质的应用的创建反射材质
Unity游戏开发技巧集锦
Unity中材质的应用
游戏中,大多数材质的应用都离不开纹理,而纹理本身是图片。所以,在学习本章时,最好在电脑上安装一个可以编辑图片的功能强大的软件,如Photoshop和GIMP。本章使用的是前者。另外,有些纹理需要包含Transparents通道,所以图片最好保存成可以存储相应信息的格式,例如,PSD和TGA。
unity中创建反射材质
生活中,反射材质(reflective material)的实例有很多。例如,水面、光滑的金属、镜子等物体都可以反射其它的物体,如水中的倒影、镜子里的人物,如图3-1所示。
图中的金属球,以及反射出的周围环境
在Unity里,可以模仿出这种反射效果。只要使用具有反射特性的着色器,然后再稍做配置即可。具体的操作过程如下:
(1)准备两张纹理图,其中一张纹理图需要包含透明信息,也就是有Alpha通道,然后导入到项目中。本节使用的两张纹理,如图3-2所示。
导入两张纹理图
(2)选中不包含透明信息的纹理,然后在Inspector视图里,做如下修改:
设置Texture Type属性为Reflection;
设置Mapping属性为Cylindrical;
然后单击Apply按钮。如此设置,说明了此纹理将被用做圆柱体的反射图。对纹理的设置以及设置后的纹理如图3-3所示。
在Inspector视图对纹理的设置以及设置后的纹理
(3)在Project视图里,创建一个材质,并命名为Mat_reflect,选中它然后在Inspector视图做如下设置:
设置Shader(着色器)属性为Reflective/Specular;
设置Base(RGB) Gloss(A)为包含透明信息的纹理;
设置Reflection Cubemap为普通纹理;
如图3-4所示。
在Inspector视图里
Scene视图里的Cylinder对象
(4)在Hierarchy视图里,添加Cylinder对象。在Scene视图里看到的Cylinder如图3-5所示。它此时没有反射出周围的任何物体。
(5)拖动Mat_reflect材质到Cylinder对象上,如图3-6所示,效果就大不相同,它即显示出了本身的颜色,又反射出了周围的物体。
提示:纹理含有的透明信息,越透明所反射的物体所成的像越清晰。图3-7,调低透明度以后,反射的图像暗了,清晰度也下降了。
正在反射出周围物体的Cylinder对象
调低透明度以后,反射成像的效果
本文选自:Unity 游戏开发技巧集锦大学霸内部资料,转载请注明出处,尊重技术尊重IT人!2635人阅读
3.3 Unity(59)
材质着色器属性
在过场动画时,可能需要动态修改材质属性的事件,Unity 的材质Material通过SetColor、SetVector等接口来更改设置其属性值。在编辑器代码中,有个MaterialProperty公开类,作为材质属性设置和获取的接口。
它将材质属性类型分为5种:
public enum PropType
将纹理类型分为3种:
public enum TexDim
Unknown = -1,
Tex2D = 2,
可获取和设置值包括colorValue、floatValue、vectorValue 和 textureValue,那么设计更改材质属性事件也可按此来设计。
材质属性更改事件
对事件的物体,做材质属性的修改。
using UnityE
namespace CinemaDirector
[CutsceneItemAttribute("Material", "Set Material Propery", CutsceneItemGenre.ActorItem)]
public class SetMaterialProperyEvent : CinemaActorEvent
public enum PropType
public enum TextureModifyType
Texture = 1,
TextureOffset = 2,
TextureScale = 4
public string shaderName = String.E
public PropType propType = PropType.T
public string propName = "_MainTex";
public Color colorV
public Vector4 vectorV
public float floatV
public Texture textureV
public int textureModifyType = (int)TextureModifyType.T
public Vector2 textureOffsetV
public Vector2 textureScaleValue = Vector2.
public override void Trigger(GameObject Actor)
if (!Application.isPlaying || string.IsNullOrEmpty(propName) || !Actor)
Renderer[] mrs = Actor.GetComponentsInChildren&Renderer&();
foreach (var mr in mrs)
ModifyMaterialProp(mr);
private void ModifyMaterialProp(Renderer mr)
Material mat = mr.
if (!mat || !mat.shader)
if (mat.shader.name != shaderName)
switch (propType)
case PropType.Color:
mat.SetColor(propName, colorValue);
case PropType.Vector:
mat.SetVector(propName, vectorValue);
case PropType.Float:
case PropType.Range:
mat.SetFloat(propName, floatValue);
case PropType.Texture:
if (((TextureModifyType)textureModifyType & TextureModifyType.Texture) != 0)
mat.SetTexture(propName, textureValue);
if (((TextureModifyType)textureModifyType & TextureModifyType.TextureOffset) != 0)
mat.SetTextureOffset(propName, textureOffsetValue);
if (((TextureModifyType)textureModifyType & TextureModifyType.TextureScale) != 0)
mat.SetTextureScale(propName, textureScaleValue);
SetMaterialProperyEvent 的检视器设计
虽然SetMaterialProperyEvent脚本可以达到运行时修改材质属性,但是在编辑时,需要手动去查看此时材质所拥有的属性,是比较麻烦的。可以做个编辑器类,自动获取当前所有可更改的材质属性,让用户去选择。
新建SetMaterialProperyEventInspector脚本,在OnEnable的时候,通过MaterialEditor.GetMaterialProperties来获得材质的所有属性。接着,将所有的属性描述列出来,让用户选择即可。unity3dshurken粒子中的材质uv动画动不了_unity3d吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:85,343贴子:
unity3dshurken粒子中的材质uv动画动不了收藏
都在动画面板里k帧了,想做个材质偏移的粒子动画效果,可是数值变了也没用。用一个立方体,同样的设置,材质是有动画的。4.6版本。
火星学习unity3d,编程师就业薪资20k起,毕业=高薪就业,unity3d0基础学习,半年即可入职一线游戏/互联网公司,火星终身免费推荐就业.
登录百度帐号模型导入unity里面后材质失效了怎么办【unity3d吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:85,343贴子:
模型导入unity里面后材质失效了怎么办收藏
模型导入unity里面后材质失效了怎么办
火星学习unity3d,编程师就业薪资20k起,毕业=高薪就业,unity3d0基础学习,半年即可入职一线游戏/互联网公司,火星终身免费推荐就业.
换了shader?还是贴图丢失?shader本来和max的就不统一,自己调吧
每个部件都有对应的材质图片,一个一个拖进去就行了
一开始我也为这个困惑,后来导出为FBX时我勾选上“嵌入的媒体”,,在unity保持运行状态下,直接从3DMAX导出到unity工程目录下的assets文件夹中,切换到unity后它会自动导入全部贴图。但是经常不能一次性导入完全,如果unity没有将贴图导入完全,把它最小化,然后再最大化,它会重新检查并导入遗漏的贴图。至少在我的电脑上是这样的。3dmax版本2012unity版本4.0
建的模型,它连材质球都没有生成求解
导出FBX的时候勾选可嵌入
登录百度帐号你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
Material gray_ui doesn't have stencil properties UnityEngine.UI.ScrollRect:LateUpdate()
用颜色改变更好些吧。我是这样用的。
要回复问题请先或
浏览: 2220
关注: 2 人}

我要回帖

更多关于 unity 金属材质 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信