代码检查:基于字符串的图形属性查找效率低下
Animator、 Material 和 Shader 的 setter 和 getter 方法可以接受一个字符串参数,用于标识要返回或设置的属性。 例如, Animator.GetBool、 Material.SetTexture 和 Shader.GetGlobalValue 等。 每次调用该方法时,Unity 会将字符串名称转换为整数 ID,用于标识属性。 此整数 ID 是一个稳定值,可以预先计算并在 setter 和 getter 的重载中使用,从而减少每次方法调用时计算 ID 的开销。
此检查将高亮显示对 Animator、 Shader 或 Material 使用基于名称的 Set 或 Get 函数的任何用法。 它还提供了一个快速修复,会引入或复用一个 static 只读整数字段,用于计算并缓存名称的整数 ID,并在 setter 或 getter 方法的字符串参数位置使用该 ID。 对于 Animator 方法,ID 通过 Animator.StringToHash 计算,而 Shader.PropertyToID 用于 Shader 和 Material。
2026年 5月 8日