当前位置: 首页 > news >正文

营销型网站是什么样的桂林北站有核酸检测点吗

营销型网站是什么样的,桂林北站有核酸检测点吗,安达市建设局网站,免费商城网站系统一、问题背景 在以往的Unity项目中涉及到修改材质的需求时#xff0c;也只是改改材质贴图#xff0c;材质颜色等#xff0c;也没遇到那么多动态修改材质的坑。最近在做Unity App Demo时也遇到了要修改材质的小需求#xff0c;本以为几分钟就能完成了#xff0c;却花费了我…一、问题背景 在以往的Unity项目中涉及到修改材质的需求时也只是改改材质贴图材质颜色等也没遇到那么多动态修改材质的坑。最近在做Unity App Demo时也遇到了要修改材质的小需求本以为几分钟就能完成了却花费了我大半天时间才弄完。需求美术那边给了三个材质球让我动态加载物体时切换该物体的材质最开始想的方案是直接把三个材质球加载的内存中直接修改物体的材质球属性不就可以了吗。转念一想这万一给我一百个材质球或者更多难道我都要加载到内存中吗这显然是不行的。我一看这三个材质球只有一个地方是不一样的那就是颜色和透明度。我就想了那我直接获取物体材质球直接修改材质球相关的属性不就完事了吗于是就出现了本文中的一系列问题。 二、解决方案 1、修改材质颜色透明度不生效 场景中新建Cube新建脚本MaterialTest.cs挂载到Cube物体下写代码实现修改Cube的材质属性 public class MaterialTest : MonoBehaviour {private Material material;void Start(){material GetComponentMeshRenderer().material;material.color new Color(1, 0, 0, 0.5f);} } 运行发现颜色变了但是透明度没变 打开Inspector面板一看发现材质的Rendering Mode 还是Opaque不透明的。 2、修改材质透明不实时刷新 基于问题一我们要通过代码修改材质的渲染模式于是加了一行代码 material.SetFloat(_Mode, 3);运行发现物体还是没有变成透明形状但是呢只要一打开物体的Inspector面板点一下材质组件Game视图中的Cube就突然刷新了变成透明了 这令我百思不得其解我在想打包发布之后又没有Inspector面板让我去手动点一下再刷新材质啊苦笑看了材质相关的api也尝试了好几张修改材质的方法都没能实时刷新材质透明度应该还是方法不对。 3、参考官方修改材质的示例成功修改透明材质 在Unity官网中每个版本的下载列表里会有一个Built in shaders下载解压之后打开Editor–StandardShaderGUI.cs脚本里面有详细的官方修改shader材质示例代码。 最终修改材质透明度的代码如下 public class MaterialTest : MonoBehaviour {private Material material;void Start(){material GetComponentMeshRenderer().material;material.color new Color(1, 0, 0, 0.5f);material.SetInt(_SrcBlend, (int)UnityEngine.Rendering.BlendMode.One);material.SetInt(_DstBlend, (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);material.SetInt(_ZWrite, 0);material.DisableKeyword(_ALPHATEST_ON);material.DisableKeyword(_ALPHABLEND_ON);material.EnableKeyword(_ALPHAPREMULTIPLY_ON);material.SetFloat(_Mode, 3);material.renderQueue (int)UnityEngine.Rendering.RenderQueue.Transparent;} }运行发现正确修改材质透明度并实时刷新。其中这个关键字最重要 _ALPHAPREMULTIPLY_ON 表示开启 “透明”透明度渲染模式 4、安卓真机物体透明度失效。 猜测是因为打包时Unity没有将Standard的透明变体打包到apk中本来是想将整个Standard标准shader放入到Graphics中的Always Included Shaders列表中去。但是一想到会造成打包时间变成很多冗余shader都会打包进去。本着按需打包的策略最后还是选择新建一个材质球Material直接挂载到物体中去将该材质球的Rendering Mode 改为Transparent这样Unity就能识别到该透明shader将其打包到apk包体中这样关联的其他物体需要透明材质时也能用到。 于是最后打包apk,真机运行透明物体渲染正确。 三、总结 在使用Unity引擎时还是需要多去官方文档或官方示例中寻找解决方案这会让你少走弯路也能让你从坑里感觉爬上来。某些情况下真机上的表现也会跟编辑器有所差别甚至完全不一样需要耐心定位问题和修改解决方案以完成需求。 四、Unity修改shader材质源码官方示例 public enum BlendMode{Opaque,Cutout,Fade, Transparent }public static void SetupMaterialWithBlendMode(Material material, BlendMode blendMode){switch (blendMode){case BlendMode.Opaque:material.SetOverrideTag(RenderType, );material.SetInt(_SrcBlend, (int)UnityEngine.Rendering.BlendMode.One);material.SetInt(_DstBlend, (int)UnityEngine.Rendering.BlendMode.Zero);material.SetInt(_ZWrite, 1);material.DisableKeyword(_ALPHATEST_ON);material.DisableKeyword(_ALPHABLEND_ON);material.DisableKeyword(_ALPHAPREMULTIPLY_ON);material.renderQueue -1;break;case BlendMode.Cutout:material.SetOverrideTag(RenderType, TransparentCutout);material.SetInt(_SrcBlend, (int)UnityEngine.Rendering.BlendMode.One);material.SetInt(_DstBlend, (int)UnityEngine.Rendering.BlendMode.Zero);material.SetInt(_ZWrite, 1);material.EnableKeyword(_ALPHATEST_ON);material.DisableKeyword(_ALPHABLEND_ON);material.DisableKeyword(_ALPHAPREMULTIPLY_ON);material.renderQueue (int)UnityEngine.Rendering.RenderQueue.AlphaTest;break;case BlendMode.Fade:material.SetOverrideTag(RenderType, Transparent);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 (int)UnityEngine.Rendering.RenderQueue.Transparent;break;case BlendMode.Transparent:material.SetOverrideTag(RenderType, Transparent);material.SetInt(_SrcBlend, (int)UnityEngine.Rendering.BlendMode.One);material.SetInt(_DstBlend, (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);material.SetInt(_ZWrite, 0);material.DisableKeyword(_ALPHATEST_ON);material.DisableKeyword(_ALPHABLEND_ON);material.EnableKeyword(_ALPHAPREMULTIPLY_ON);material.renderQueue (int)UnityEngine.Rendering.RenderQueue.Transparent;break;}}
http://www.zqtcl.cn/news/110625/

相关文章:

  • 团购网站建设方案建筑工程网校官网
  • 佛山建站网站模板小公司管理方法
  • 常德住房和城乡建设局网站做风险代理案源的网站
  • 手机网站开发人员选项wordpress加载媒体库
  • 做钓鱼网站用哪种编程语言张家界有实力seo优化费用
  • 如何做一个主题网站做网站必须有框架么
  • 建设网站需要什么知识上海高端网页设计
  • 电子商务网站建设基本流程公司网站建设平台
  • 域名没过期 网站打不开怎么办素马设计顾问讲解价格
  • 怎么做非法彩票网站贵州网站开发哪家便宜
  • 青岛市医疗保险网站wordpress七牛云
  • 哪个浏览器可以做网站查询网站的外链
  • 浅析社区网站的建设有了网站源码 怎么建设网站
  • 苏州网站排名优化系统网页设计师
  • 网站开发定制推广杭州河南省的网页制作
  • 北京随喜设计网站国内好的seo网站
  • 网站中宣传彩页怎么做的网站建设评估及分析
  • 东莞php网站建设素材网站php程序源码
  • 怎么做免费视频网站模版网站可以做seo吗
  • 备案期间怎么做网站微动漫怎么制作
  • 精美的php个人网站源码公司网站建设方案书
  • 站长如何做视频类网站如何诊断网站
  • 个人怎么做网站优化在线做印章的网站
  • 自己做的小网站市场营销互联网营销
  • 程序员会搭建非法网站吗永久免费生成app网页
  • 重庆渝北做网站哪里便宜浙江建设职业学校网站
  • 移动端网站开发介绍品牌宣传网站
  • 做文案图片上什么网站seo具体优化流程
  • 摄影做网站中国电商公司排名
  • 比较好的平面设计网站国际进出口贸易网站