cs怎么更换屏幕颜色

生活妙招 changlong 2025-11-25 03:34 1 0

✅ 方法一:使用 Camera.backgroundColor(最简单)

适用于整个屏幕背景色的更改。

using UnityEngine;
public class ChangeScreenColor : MonoBehaviour
{
    void Start()
    {
        // 设置相机背景颜色(例如红色)
        Camera.main.backgroundColor = Color.red;
    }
}

📌 说明

  • 该方法只改变相机渲染的背景颜色(不渲染物体时可见)。
  • 如果你有天空盒(Skybox)或环境光,可能不会立刻看到变化,需先关闭 Skybox 或设置为无材质。

✅ 方法二:使用 Shader 替换整个屏幕(后处理/全局着色器)

如果你希望“全局”改变屏幕颜色(比如变成黑白、红蓝滤镜等),可以使用 Image EffectPost Processing

示例:使用 Shader 实现全局颜色调整

  1. 创建一个简单的 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,性能要优化。