Modify skybox material property in-game via script

Hi everyone,

I’m quite new to Unity and C# and I’m trying to figure out how to modify (+/-) a custom skybox property (‘azimuth’, adjusts sun positioning) in real time using a keypress during gameplay. While I understand how to get code to trigger on input, I’m not sure how to access and modify the various parameters of skybox materials.

I’ve attached a portion of code I found within the skybox editor script which may or may not be relevant.

EditorGUILayout.Space ();

            var az = GetMaterialProperty (targets, "_SunAzimuth");
            var al = GetMaterialProperty (targets, "_SunAltitude");

            if (az.hasMixedValue || al.hasMixedValue )
                EditorGUILayout.HelpBox ("Editing angles is disabled because they have mixed values.", MessageType.Warning);
                FloatProperty (az, "Azimuth");
                FloatProperty (al, "Altitude");

Many thanks for the help! I’ve been at this for hours with no luck. :frowning:


using UnityEngine;

public class ChangeSunVector : MonoBehaviour
    public float azimuth;
    public float altitude;
    Material skyMat;
    Vector4 upVector;

    void Start()
        skyMat = RenderSettings.skybox;

    void Update()
        if (Input.GetKeyDown(KeyCode.E))
            skyMat.SetVector("_SunVector", CalculateSunVector());

    Vector4 CalculateSunVector()
        var raz = azimuth * Mathf.Deg2Rad;
        var ral = altitude * Mathf.Deg2Rad;

        return new Vector4(
            Mathf.Cos(ral) * Mathf.Sin(raz),
            Mathf.Cos(ral) * Mathf.Cos(raz),

@jonathanbaird don’t know if you still need it…