Unity游戏角色翻转后变黑问题解决方案咨询
Unity角色翻转后完全变黑的问题解决
问题说明
制作游戏光源时,主角通过代码翻转后会完全变黑:
- 未翻转状态:

- 翻转状态:

角色翻转实现代码:
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class PlayerMove : MonoBehaviour { public Vector2 moveVector; public bool faceRight = true; void Update() { Reflect(); } void Reflect() { if ((moveVector.x > 0 && !faceRight) || (moveVector.x < 0 && faceRight)) { transform.localScale *= new Vector2(-1, 1); faceRight = !faceRight; } } }
解决方法
方案1:替换翻转方式(推荐)
当前通过缩放X轴翻转角色会反转模型法线,导致Unity默认的背面剔除机制把朝向光源的面当成背面剔除,最终角色变黑。改用绕Y轴旋转实现翻转:
void Reflect() { if ((moveVector.x > 0 && !faceRight) || (moveVector.x < 0 && faceRight)) { transform.Rotate(0, 180, 0); faceRight = !faceRight; } }
方案2:关闭背面剔除(不推荐,可能影响性能)
如果必须保留缩放翻转的方式,修改角色材质的Shader设置:
- 选中角色Mesh Renderer组件中的材质
- 在Inspector面板找到Shader的
Cull选项,设置为Off(关闭背面剔除) - 或切换到支持双面渲染的Shader模式(如Transparent)
方案3:检查光照相关组件
- 若角色使用了
Light Probe Proxy Volume,暂时禁用该组件测试是否恢复正常,排查探针采样异常问题 - 检查场景光源角度,确保翻转后角色不会完全背离主光源,必要时添加补光
内容的提问来源于stack exchange,提问作者ART33
相关产品推荐
相关产品推荐

