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

Unity中使用VectorGraphics插件时,VectorUtils.RenderSpriteToTexture2D方法返回结果错误的解决方法

        Unity中使用VectorGraphics插件时,如果使用VectorUtils.BuildSprite方法创建Sprite,那么得到的Sprite往往是一个三角网格数比较多的Sprite,如果想要得到使用贴图只有两个三角面的方形Sprite,可以使用该插件提供的VectorUtils.RenderSpriteToTexture2D方法把Sprite的网格生成贴图再贴回到只有两个三角面的Sprite上去使用。

        但是在实际使用时会出现命名在编辑器里面显示正确的结果,但是发布(目前只是测试在WebGL平台发布的结果,别的平台没有测试)之后却空空如也,Sprite消失不见了,问题实际上就是VectorUtils.RenderSpriteToTexture2D这个方法生成Texture2D纹理失败。

        这个问题可以说是看起来复杂,其实一点儿都不简单:D

        看一下VectorUtils.RenderSpriteToTexture2D这个方法的源码,一切问题就都清楚了。

        

        注意一下第397行、415行、424行,这个分别使用Shader名称的方式来获取Shader进行渲染,这在编辑器里面当然一定会成立,但是发布出来之后,如果没有保证这些Shader被打包进发布的文件中的话,这些Shader就无法通过名称查找到了。

        这些Shader的位置如下图所示:

         以前遇到这种问题,我的解决办法简单粗暴,弄个脚本,在脚本里面序列化一个Shader数组,然后把脚本挂到一个物体上去,在脚本上引用这三个Shader,再次发布,搞定。

        后来发现也可以再ProjectSetting的Graphics里面设置,如下图:

        需要说明的是,我在使用VectorUtils.RenderSpriteToTexture2D这个方法的时候,里面的expandEdges使用了默认的false,所以只是添加了一个"Hiddren/VectorDemultiply"的Shader的引用,如果你使用VectorUtils.RenderSpriteToTexture2D这个方法的时候,参数expandEdges的值有可能是true,那么要把另外两个Shader也添加进去。

相关文章:

  • 论文学习——动态多目标优化的一种新的分位数引导的对偶预测策略
  • [图解]企业应用架构模式2024新译本讲解22-标识映射
  • 欧拉openEuler 22.03 LTS-部署k8sv1.03.1
  • 【深海王国】小学生都能玩的语音模块?ASRPRO打造你的第一个智能语音助手(6)
  • ESP32之arduino环境安装及点灯
  • CentOS中使用SSH远程登录
  • 【华为战报】5月、6月HCIP考试战报!
  • Flink实现准确和高效流处理的关键问题
  • Keycloak SSO 如何验证已添加的 SPN 是否生效
  • 3个让你爽到爆炸的学习工具
  • IP地址配置
  • 解决跨域问题(vite、axios/koa)
  • el-dropdown的command方法添加自定义参数
  • 【项目实践】贪吃蛇
  • N-gram算法的pytorch代码实现
  • 自己简单写的 事件订阅机制
  • 【刷算法】求1+2+3+...+n
  • isset在php5.6-和php7.0+的一些差异
  • js
  • Mithril.js 入门介绍
  • Mocha测试初探
  • npx命令介绍
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • 测试开发系类之接口自动化测试
  • 排序(1):冒泡排序
  • 算法-插入排序
  • 物联网链路协议
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 鱼骨图 - 如何绘制?
  • 在Mac OS X上安装 Ruby运行环境
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​香农与信息论三大定律
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #define,static,const,三种常量的区别
  • #Linux(Source Insight安装及工程建立)
  • #传输# #传输数据判断#
  • (1)(1.13) SiK无线电高级配置(五)
  • (23)Linux的软硬连接
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (转)visual stdio 书签功能介绍
  • (转)可以带来幸福的一本书
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • ./configure,make,make install的作用(转)
  • .libPaths()设置包加载目录
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .Net Core缓存组件(MemoryCache)源码解析
  • .Net IOC框架入门之一 Unity
  • .NET Remoting学习笔记(三)信道
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • .net中的Queue和Stack