You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优化文本样式调整代码,在保持功能的同时简化实现?

如何优化文本样式调整代码,在保持功能的同时简化实现?

嘿,我太懂你写一堆嵌套if-else的烦恼了——刚开始处理这种多状态组合的时候,我也这么折腾过!其实完全不用这么复杂,因为FontStyles是一个位枚举(Bitwise Enum),我们可以直接根据每个开关的状态来动态拼接样式,代码瞬间就能简洁很多,而且功能和你原来的完全一致。

简化后的代码

// 先初始化样式为默认的Normal
tempResultText.fontStyle = FontStyles.Normal;

// 根据每个开关状态,逐个叠加对应的样式
if (decisionRouletteOption.IsBold)
    tempResultText.fontStyle |= FontStyles.Bold;
if (decisionRouletteOption.IsCursive)
    tempResultText.fontStyle |= FontStyles.Italic; // 这里注意变量名是IsCursive但对应Italic,要是笔误的话建议改成IsItalic,可读性更好
if (decisionRouletteOption.IsUnderline)
    tempResultText.fontStyle |= FontStyles.Underline;

为什么这个方案可行?

位枚举的每个值都对应二进制里的一个独立位,比如Bold是0b001,Italic是0b010,Underline是0b100。用|=操作符就相当于把对应的位设置为1,多个样式叠加就是把多个位都置1,效果和你原来写的所有分支判断完全一样,但代码量直接砍到原来的1/3还不到!

关于你提到的Switch语句

其实Switch在这里确实不太适用,因为Switch更适合处理单一变量的固定值分支,而你要判断的是三个布尔值的组合(总共有8种可能),用Switch反而会比原来的if-else还麻烦。上面的位枚举拼接方式才是最适配这种场景的解决方案。

备注:内容来源于stack exchange,提问作者AmateurUnityDeveloper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 15:19:38