用Mask遮罩SkeletonGraphic组件时,遇到无法正确裁切的问题。

通过添加自定义组件 SkeletonClip 来决绝这个问题:

1.将组件挂载到SkeletonGraphic所在gameObject。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class SkeletonClip : MonoBehaviour {//遮挡容器,即MaskRectTransform rectTrans;private void Start() {UpdateClip();}public void UpdateClip(){rectTrans = transform.GetComponentInParent<Mask>()?.transform as RectTransform;if (rectTrans == null){return;}//spine动画的材质var _spineMat = transform.GetComponent<Spine.Unity.SkeletonGraphic>().material;if (_spineMat != null){/*使用另外一个Shadervar _shaderOnMat = Shader.Find(_spineMat.shader.name+"InMask");if (_shaderOnMat){_spineMat.shader = _shaderOnMat;}*///使用变体_spineMat.EnableKeyword("USING_MASK");}//获取世界坐标系下的四个角的坐标Vector3[] _corners = new Vector3[4];rectTrans.GetWorldCorners(_corners);//取得上下左右的边界float _minX = _corners[0].x;float _minY = _corners[0].y;float _maxX = _corners[2].x;float _maxY = _corners[2].y;//将边界数设置到材质上_spineMat.SetFloat("_MinX", _minX);_spineMat.SetFloat("_MinY", _minY);_spineMat.SetFloat("_MaxX", _maxX);_spineMat.SetFloat("_MaxY", _maxY);}
}

2.另外还要重写一下SkeletonGrapic所使用的Shader "Spine/Skeleton"

通过 USING_MASK 标示,来选择不同的变体

3.注意Spine创建的模式,右键菜单创建的Spine,如下流程

材质是公用的,也就是说Shader也是公用的。使用变体无法起作用,因为运行时,Shader实例是一个。

这时,需要DIY,通过代码创建Spine或者创建一个新材质来关联Mask下生效的Shader.

Spine动画在Mask下显示异常的解决方案相关推荐

  1. 前端服务器OWA 访问显示异常最佳解决方案

    EXCHANGE2003环境: 前端服务器:denver     后端服务器:sbs1 出现的问题: 当从一台XP客户端通过OWA进行访问时,如直接通过后端[url]http://sbs1/excha ...

  2. Spine动画动态切换模型显示

    问题:如何切换Spine模型显示? 在Spine的示例工程中有可以在动态生成一个新的Spine模型对象的场景,核心代码就是: var sa = SkeletonAnimation.NewSkeleto ...

  3. Word图标显示异常空白解决方案

    问题描述 最近使用电脑时突然发现桌面的word文档图标变成了空白,之前也遇到过这个问题,但一时想不起来之前是怎么解决的(只记得是跟注册表相关),遂上网查找了一番,经过一两个小时折腾后终于解决了问题,遂 ...

  4. web系统时区不一致导致时间显示异常的解决方案

    先说一下场景,一般在国内,我们都用的东八区时间,部署系统的时候,如果操作系统的时区也初始化为Asia/Shanghai,这样节点上所有的服务时区默认都会跟操作系统保持一致,用户访问系统页面时,展示的时 ...

  5. input在iphone下显示上边框解决方案

    在css样式表中添加属性 方案一: input {outline: none;-webkit-appearance: none; /*去除系统默认的样式*/-webkit-tap-highlight- ...

  6. 使用360电脑门诊软件修复Netbeans图标显示异常

    本来在"开始"菜单,任务栏里等地方的Netbeans的图标显示是正常的,在安装了VMware8.0以后,这些地方的Netbeans图标变成未知文件图标,重新安装Netbeans软件 ...

  7. linux命令画圣诞树图片,在Linux终端下显示动画的圣诞树

    2018年12月24日是平安夜,这意味着2018年圣诞节要到了,在这个节日到来之际,送你一个有趣而酷炫的Linux Bash技巧,即在终端中显示动画圣诞树,只需要一个脚本并且执行这个脚本就可以了. 在 ...

  8. win10下任务栏 Adobe pdf阅读器图标显示异常

    相信有不少用户像我一样, 偶然间发现pdf阅读器(Adobe Acrobat Reader DC)在任务栏的图标显示异常, 像下边这样 默认显示是windows照片查看器的图标, 虽然不影响正常使用, ...

  9. win10下桌面图标显示异常

    如何win10下桌面图标显示异常 原因: 图标缓存损坏 解决方案 删除损坏图标 重新创建 重启电脑 如果还是加载不出 原因:损坏图标缓存已安装进win10 进入window instllar 在重新删 ...

最新文章

  1. apache-2.4.x 编译安装方法
  2. 【LintCode: 3. 统计数字】算法题解析
  3. 【原创】C# 递归获取指定目录的子目录及其所有文件
  4. 解决Linux环境下Tomcat启动卡住问题
  5. 社区运营破冰也有三大原则八项注意“了,你造吗?
  6. C#委托Action、ActionT、FuncT、PredicateT
  7. 深度优先搜索知识总结
  8. 开发高性能的 ASP.NET 应用程序
  9. P3317 [SDOI2014]重建
  10. cd JAVA系统找不到指定路径_SDK Manager 打不开, 系统找不到指定路径 Unable to access jarfile lib\archquery.jar问题的解决办法...
  11. 为何大厂APP如微信、支付宝、淘宝、手Q等只适配了armeabi-v7a/armeabi?
  12. SwiftUI实战教程 第一章:前言
  13. Java在线聊天室(客户端+服务器)
  14. python 字段_python字典查询
  15. 【上汽零束SOA】云管端一体化SOA软件平台系列介绍之一:产品篇
  16. cron表达式每隔1小时一次_cron 每隔1小时50分钟_cron每小时执行一次
  17. 大型机、小型机、x86架构以及ARM架构服务器的区别大型机、小型机、x86架构以及ARM架构服务器的区别
  18. HTML学生个人网站作业设计:班级网站设计——上海学校 4页
  19. wim工具扫描linux磁盘,[V1.30.2011.501版]WimTool -- Wim文件的图形视窗处理工具[无忧首发]...
  20. 什么样的岗位会最先被人工智能 (AI) 取代?

热门文章

  1. 计算机系的学ansys吗,【答疑】学ansys软件需要什么样的电脑配置才能运行? - 视频教程线上学...
  2. 阿拉伯语在网页中排版问题解决
  3. 安监在线巡查指挥系统
  4. 使用Markdown语法编写数学公式(详细版)
  5. 武汉大学中山大学计算机就业,中山大学与武汉大学:实力接近,规模相当,2021录取差距拉大...
  6. 转专业2017武汉大学计算机学,武汉大学法学院
  7. Vue关于双向绑定和单向数据流的理解
  8. 使用 Prometheus 进行应用监控
  9. 数据库T-SQL语句
  10. 基于springboot+Vue的鲜花销售商城网站