using UnityEngine; // from https://wiki.unity3d.com/index.php/CameraGradientBackground public class GradientBackground : MonoBehaviour { Camera _camera; public Shader shader; public Color topColor = Color.blue; public Color bottomColor = Color.white; public int gradientLayer = 7; public Transform attachPoint; void Awake() { _camera = GetComponent(); gradientLayer = Mathf.Clamp(gradientLayer, 0, 31); if (!_camera) { Debug.LogError("Must attach GradientBackground script to the camera"); return; } _camera.clearFlags = CameraClearFlags.Depth; _camera.cullingMask = _camera.cullingMask & ~(1 << gradientLayer); Camera gradientCam = new GameObject("Gradient Cam", typeof(Camera)).GetComponent(); if (attachPoint != null) gradientCam.transform.SetParent(attachPoint); gradientCam.depth = _camera.depth - 1; gradientCam.cullingMask = 1 << gradientLayer; gradientCam.backgroundColor = Color.black; exprivia.ui.CameraIntoSafeArea.ResizeCameraIntoSafeArea(gradientCam); Mesh mesh = new Mesh(); mesh.vertices = new Vector3[4] {new Vector3(-100f, .577f, 1f), new Vector3(100f, .577f, 1f), new Vector3(-100f, -.577f, 1f), new Vector3(100f, -.577f, 1f)}; //mesh.vertices = new Vector3[4] // {new Vector3(-100f, .577f, 1f), new Vector3(100f, .577f, 1f), new Vector3(-100f, -.577f, 1f), new Vector3(100f, -.577f, 1f)}; mesh.colors = new Color[4] { topColor, topColor, bottomColor, bottomColor }; mesh.triangles = new int[6] { 0, 1, 2, 1, 3, 2 }; Material mat = new Material(shader); GameObject gradientPlane = new GameObject("Gradient Plane", typeof(MeshFilter), typeof(MeshRenderer)); if (attachPoint != null) gradientPlane.transform.SetParent(attachPoint); ((MeshFilter)gradientPlane.GetComponent(typeof(MeshFilter))).mesh = mesh; gradientPlane.GetComponent().material = mat; gradientPlane.layer = gradientLayer; } }