Unity中通过bool控制Get方法返回颜色时出现返回值缺失报错
解决Unity属性Get方法未返回值的报错问题
你的问题根源很清晰:当defaultColors为false时,gridMinorColor的get访问器没有返回任何值——C#要求属性的get方法必须在所有代码路径都返回一个符合类型的值,所以编译器直接抛出了错误。
我们只需要补充defaultColors == false时的返回逻辑,对应你定义的自定义颜色变量,同时保留编辑器皮肤类型的判断逻辑,修改后的代码如下:
private static Color gridMinorColor { get { if (defaultColors) { return EditorGUIUtility.isProSkin ? kGridMinorColorDark : kGridMinorColorLight; } else { // 匹配皮肤类型返回对应自定义颜色 return EditorGUIUtility.isProSkin ? CustomkGridMinorColorDark : CustomkGridMinorColorLight; } } }
同理,gridMajorColor也需要做完全相同的修改,避免出现同样的报错:
private static Color gridMajorColor { get { if (defaultColors) { return EditorGUIUtility.isProSkin ? kGridMajorColorDark : kGridMajorColorLight; } else { return EditorGUIUtility.isProSkin ? CustomkGridMajorColorDark : CustomkGridMajorColorLight; } } }
额外小提示
- 记得在使用自定义颜色前,确保
CustomkGridMinorColorDark、CustomkGridMinorColorLight等变量已经被赋予了有效的颜色值,不然会默认使用Color的初始值(透明黑色)。 - 用嵌套三元运算符替代多层if判断,能让代码更简洁直观,可读性也更强。
内容的提问来源于stack exchange,提问作者Daniel Lip
相关产品推荐
相关产品推荐

