cs怎么更换屏幕颜色
✅ 方法一:使用 Camera.backgroundColor(最简单)
适用于整个屏幕背景色的更改。
using UnityEngine;
public class ChangeScreenColor : MonoBehaviour
{
void Start()
{
// 设置相机背景颜色(例如红色)
Camera.main.backgroundColor = Color.red;
}
}
📌 说明:
- 该方法只改变相机渲染的背景颜色(不渲染物体时可见)。
- 如果你有天空盒(Skybox)或环境光,可能不会立刻看到变化,需先关闭 Skybox 或设置为无材质。
✅ 方法二:使用 Shader 替换整个屏幕(后处理/全局着色器)
如果你希望“全局”改变屏幕颜色(比如变成黑白、红蓝滤镜等),可以使用 Image Effect 或 Post Processing。
示例:使用 Shader 实现全局颜色调整
- 创建一个简单的 Shader(如
ColorTint.shader):
Shader "Custom/ColorTint"
{
Properties
{
_Color ("Tint Color", Color) = (1,1,1,1)
}
SubShader
{
Tags { "RenderType"="Opaque" }
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
float4 _Color;
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
v2f vert(appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = v.uv;
return o;
}
fixed4 frag(v2f i) : SV_Target
{
return fixed4(_Color.rgb, 1);
}
ENDCG
}
}
}
在脚本中应用这个 Shader 到摄像机:
using UnityEngine;
public class ScreenTint : MonoBehaviour
{
public Material tintMaterial;
private Camera cam;
void Start()
{
cam = GetComponent<Camera>();
cam.targetTexture = new RenderTexture(Screen.width, Screen.height, 24);
cam.SetReplacementShader(tintMaterial, "");
}
void Update()
{
if (Input.GetKeyDown(KeyCode.R))
{
tintMaterial.color = Color.red; // 更改颜色
}
}
}
📌 这种方式适合做「全局滤镜」效果,比如电影感调色。
✅ 方法三:使用 Post Processing Stack(推荐用于复杂效果)
如果你用的是 Unity 的 Post Processing Stack v2/v3,可以添加:
- Color Grading(颜色分级)
- Bloom / Contrast / Saturation 等效果
- 支持实时调节屏幕色彩风格
👉 适合项目级调色(如游戏剧情切换、氛围变化)。
🧠 小贴士:
- 若只是临时测试颜色,建议用
Camera.main.backgroundColor。 - 若想做 UI 全局遮罩或特效,可以用
CanvasRenderer+ 半透明黑色层。 - 避免频繁创建/销毁 RenderTexture,性能要优化。








