Lazy loaded image
Unity中Outline和Shadow组件顺序导致的赋值问题
Words 313Read Time 1 min
2024-2-29
2025-4-3
type
status
date
slug
summary
tags
category
icon
password
在项目中使用Text时,遇到了在代码中动态分别给描边组件outline和阴影组件shadow赋颜色值的需求。但是过程中发现了个问题,在同时赋值一个颜色或者分别赋值不同颜色时,只有outline颜色变了,shadow没有,于是在查阅资料和询问大佬的情况下搞清了这个问题。
 

问题复现

首先是在Text上挂OutLine和Shadow组件,这里OutLine组件在上
notion image
然后在代码中给OutLine和Shadow的effectColor属性赋值,代码中赋值的顺序无所谓,然后运行英雄,你会发现每次都只有outline的颜色变化了,shadow并没有变

问题解决

出现问题后我去看了源码,发现Outline是继承shadow的。
notion image
并且effectColor的实现也是在父类Shadow中
notion image
所以当我们获取Outline时,得到的是Outline,再次获取Shadow时,因为Outline继承自Shadow,所以获取的就是Outline这个子类。弄清楚问题所在后,很明显我们只要让预制中的shadow组件在outline组件的上面就可以分别赋值了。
 
上一篇
简述游戏AI
下一篇
Unity渲染管线

Comments
Loading...