Material四个模式

动态修改代码

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class CanvasPos : MonoBehaviour
  6. {
  7. public enum RenderingMode
  8. {
  9. Opaque,
  10. Cutout,
  11. Fade,
  12. Transparent,
  13. }
  14.  
  15. public static void SetMaterialRenderingMode(Material material, RenderingMode renderingMode)
  16. {
  17. switch (renderingMode)
  18. {
  19. case RenderingMode.Opaque:
  20. material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One);
  21. material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.Zero);
  22. material.SetInt("_ZWrite", 1);
  23. material.DisableKeyword("_ALPHATEST_ON");
  24. material.DisableKeyword("_ALPHABLEND_ON");
  25. material.DisableKeyword("_ALPHAPREMULTIPLY_ON");
  26. material.renderQueue = -1;
  27. break;
  28. case RenderingMode.Cutout:
  29. material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One);
  30. material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.Zero);
  31. material.SetInt("_ZWrite", 1);
  32. material.EnableKeyword("_ALPHATEST_ON");
  33. material.DisableKeyword("_ALPHABLEND_ON");
  34. material.DisableKeyword("_ALPHAPREMULTIPLY_ON");
  35. material.renderQueue = 2450;
  36. break;
  37. case RenderingMode.Fade:
  38. material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha);
  39. material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
  40. material.SetInt("_ZWrite", 0);
  41. material.DisableKeyword("_ALPHATEST_ON");
  42. material.EnableKeyword("_ALPHABLEND_ON");
  43. material.DisableKeyword("_ALPHAPREMULTIPLY_ON");
  44. material.renderQueue = 3000;
  45. break;
  46. case RenderingMode.Transparent:
  47. material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One);
  48. material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
  49. material.SetInt("_ZWrite", 0);
  50. material.DisableKeyword("_ALPHATEST_ON");
  51. material.DisableKeyword("_ALPHABLEND_ON");
  52. material.EnableKeyword("_ALPHAPREMULTIPLY_ON");
  53. material.renderQueue = 3000;
  54. break;
  55. }
  56. }
  57. }

调用代码如下

  1. private Material toumingsb1, toumingsb2;
  2.  
  3. void Start(){
  4. Material[] tou = hit.transform.GetComponent<MeshRenderer>().materials;
  5. toumingsb1 = tou[0];
  6.  
  7. toumingsb2 = tou[1];
  8. CanvasPos.SetMaterialRenderingMode(toumingsb1, CanvasPos.RenderingMode.Transparent);
  9. CanvasPos.SetMaterialRenderingMode(toumingsb2, CanvasPos.RenderingMode.Fade);
  10. }

本次就这么多了,需要会在补充的,感谢阅读

Unity动态修改材质球RenderingMode属性的更多相关文章

  1. Unity3D代码动态修改材质球的颜色

    代码动态修改材质球的颜色: gameObject.GetComponent<Renderer>().material.color=Color.red;//当材质球的Shader为标准时,可 ...

  2. JQuery中如何动态修改input的type属性

    代码如下: jQuery(".member_id").focus(function() { jQuery(this).val(''); }).blur(function() { i ...

  3. Unity3d运行时动态修改材质

    void Start () { const string MainTexVariableName = "_MainTex"; var renders = gameObject.Ge ...

  4. JDK动态代理+反射实现动态修改注解属性值

    这是最近朋友的一个需求,正好闲来无聊有些时间,跟着研究一下,如有不正确的地方,欢迎大家指正~ 一.准备自定义注解 注:如何实现自定义注解,请移步百度. 二.实现 1.实现方式1:通过反射+动态代理动态 ...

  5. 【WPF】MVVM动态修改Bingding的另一种思路——用Style样式

    问题场景: 界面上有个ListBox控件,它的内容Item绑定了一个列表,即 ItemsSource =”{Binding StudentList}”.这个StudentList列表在该界面View对 ...

  6. 关于Unity中如何代码动态修改天空盒

    在Unity中动态修改天空盒有两种方法: 一.为每个Texture建立天空盒材质球,需要更换时直接将对应材质球作为天空盒,缺点是建立的材质球太多 private void ChangeSkybox(M ...

  7. Unity 3D动态修改Shader状态,使物体透明等等

    Unity动态改Shader状态透明 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...

  8. 自己动手丰衣足食之轮播图一动态修改marginTop属性实现轮播图

    引言 学习jQuery有年头了,刚开始学习时自己动手写过轮播图,放的久了以至于忘了大致思路了.现在转而做前端,抽空把jquery轮播图拿出来写一写,把各种思路都自己练习练习,这里主要使用动态修改mar ...

  9. JavaScript动态修改html组件form的action属性

    用javaScript动态修改html组件form的action属性,可以在提交时再决定处理表单的页面. <%--JavaScript部分--%><script language=& ...

  10. (转载)Unity里实现更换游戏对象材质球

    在unity中本来想实现在一个背景墙上更换图片的功能 在网上查了一些资料说是用Image,但我是新手小白刚接触Unity不久好多组建还不会用,就想能不能通过改变游戏对象的材质球来更换游戏对象的背景. ...

随机推荐

  1. Vue ElementUI 修改MessageBox 弹框样式

    1.情景还原 <template> <el-button type="text" @click="open">点击打开 Message ...

  2. SOFAJRaft源码阅读(伍)-初识RheaKV

    SOFAJRaft的SOFAJRaft-RheaKV 是基于 SOFAJRaft 和 RocksDB 实现的嵌入式.分布式.高可用.强一致的 KV 存储类库.SOFAJRaft-RheaKV 集群主要 ...

  3. 编程哲学之 C# 篇:003——为什么选择 C#

    国内开设C#课程的学校或培训机构是越来越少,使用C#作为开发的语言企业也是越来越少.企业要招C#的开发人员越来越难,会C#的要开发人员要找工作也是越来越难,然后我还是选择C#作为本系列的主要语言,我给 ...

  4. Zstack救急实战记录

    起了这么个标题很容易引起歧义,先说明:是Zstack云架构帮我救急,而不是Zstack系统出了问题被救.具体容我慢慢道来: 使用Docker搭建EPICS的IOC记录 去年暑假时在一台工控机上裸装ce ...

  5. uniapp 分享 绘制海报

    小程序分享海报,由于微信的限制,暂时无法直接分享小程序到朋友圈(虽然微信开发者工具基础库从2.11.3开始支持分享小程序到朋友圈,但目前仍处于Beta中)所以生成海报仍然还是主流方式 主体思路:将设计 ...

  6. echarts使用dataset数据集创建单轴散点图

    dataset创建单轴散点图 由于使用echarts作图时,我很喜欢用dataset作为数据源,但是官方案例中,有没有给出相关示例,于是,在翻阅官方文档相关案例之后,结合官方文档使用dataset的示 ...

  7. JZOJ 5460. 士兵训练

    题目 \(1\le n,q \le 2\cdot {10}^5,0\le b_i,l_i \le {10}^9,b_i \ge 1,1 \le S_i \le n\) \(Solution\) 这题很 ...

  8. 代码随想录算法训练营day02 | leetcode 977/209/59

    leetcode 977   分析1.0:   要求对平方后的int排序,而给定数组中元素可正可负,一开始有思维误区,觉得最小值一定在0左右徘徊,但数据可能并不包含0:遂继续思考,发现元素分布有三种情 ...

  9. .net core Ubuntu下docker部署(精简版)

    一.首先先添加一个.netCore 项目,选择启用docker(我用的是vs2019,之前的可能需要手动点击项目添加docker支持) 没有的话需要手动添加 之后你的项目会存在这个dockerfile ...

  10. Angular 利用路由快照实现tab

    1.定义路由快照 新建文件SimpleReuseStrategy.ts import { RouteReuseStrategy, DefaultUrlSerializer, ActivatedRout ...