Unity3d在runtime中改变material渲染模式
2016-04-13 17:47
471 查看
material.SetFloat("_Mode",3);
material为实例化的Material,这个顺序和inspecter看到的应该是一样的 0是Opaque 1是cutout 以此类推
用了这个发现inspecter里面模式是改变了,但是没有达到预期的效果
http://forum.unity3d.com/threads/access-rendering-mode-var-on-standard-shader-via-scripting.287002/#post-1961025
然后跑到这里 看到了这个
material.SetFloat("_Mode", 2);
material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha);
material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
material.SetInt("_ZWrite", 0);
material.DisableKeyword("_ALPHATEST_ON");
material.EnableKeyword("_ALPHABLEND_ON");
material.DisableKeyword("_ALPHAPREMULTIPLY_ON")
material.renderQueue = 3000;
原来改变这个"_Mode"值并没有什么卵用
Color GlazingColor = new Color(0.5f, 0.5f, 0.5f,0.2f);
material.SetColor("_Color", GlazingColor);
material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One);
material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
material.SetInt("_ZWrite", 1);
material.DisableKeyword("_ALPHATEST_ON");
material.DisableKeyword("_ALPHABLEND_ON");
material.EnableKeyword("_ALPHAPREMULTIPLY_ON");
material.renderQueue = 3000;
material.SetFloat("_Mode", 3);
最后这样 得到了 玻璃材质。
这里也有一篇文章,如果想要做这个的同学 可以参考一下 这位大大的:http://blog.csdn.net/zhangyukof/article/details/51141464
material为实例化的Material,这个顺序和inspecter看到的应该是一样的 0是Opaque 1是cutout 以此类推
用了这个发现inspecter里面模式是改变了,但是没有达到预期的效果
http://forum.unity3d.com/threads/access-rendering-mode-var-on-standard-shader-via-scripting.287002/#post-1961025
然后跑到这里 看到了这个
material.SetFloat("_Mode", 2);
material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha);
material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
material.SetInt("_ZWrite", 0);
material.DisableKeyword("_ALPHATEST_ON");
material.EnableKeyword("_ALPHABLEND_ON");
material.DisableKeyword("_ALPHAPREMULTIPLY_ON")
material.renderQueue = 3000;
原来改变这个"_Mode"值并没有什么卵用
Color GlazingColor = new Color(0.5f, 0.5f, 0.5f,0.2f);
material.SetColor("_Color", GlazingColor);
material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One);
material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
material.SetInt("_ZWrite", 1);
material.DisableKeyword("_ALPHATEST_ON");
material.DisableKeyword("_ALPHABLEND_ON");
material.EnableKeyword("_ALPHAPREMULTIPLY_ON");
material.renderQueue = 3000;
material.SetFloat("_Mode", 3);
最后这样 得到了 玻璃材质。
这里也有一篇文章,如果想要做这个的同学 可以参考一下 这位大大的:http://blog.csdn.net/zhangyukof/article/details/51141464
相关文章推荐
- Kinect结合Unity3D引擎开发体感游戏(一)
- Unity3D中脚本的执行顺序和编译顺序
- Unity3D动态对象优化代码分享
- Unity3D获取当前键盘按键及Unity3D鼠标、键盘的基本操作
- Unity3d获取系统时间
- unity3d发布apk在android虚拟机中运行的详细步骤(unity3d导出android apk)
- Unity3D游戏引擎实现在Android中打开WebView的实例
- unity3d调用手机或电脑摄像头
- Unity3d发布IOS9应用时出现中文乱码的解决方法
- 分享一个开源的网络游戏服务器架构—HouHai
- Unity3D插件详细评测及教学下载
- Unity3D上路_01-2D太空射击游戏
- Unity3D上路_02-第一视角射击游戏
- Unity3D上路_03-塔防游戏
- Unity3D上路_04-基础资源介绍
- Unity3D上路_05-网络相关