うにてぃブログ

主にUnityとC#に関する記事を書いていきます

【Unity】Light Cookie の Size や Offset をスクリプトから変更する

Light クラスには Cookie のテクスチャ(cookie) や サイズ (cookieSize) はあるが

    [SerializeField]
    private Light _Light;

Inspector 上に表示されている Cookie Size や Cookie Offset の参照は無く変更することができない

なぜならば Size や Offset のパラメータは UniversalAdditionalLightData が持っている

    public class UniversalAdditionalLightData : MonoBehaviour, IAdditionalData
    {
        [Tooltip("Controls the size of the cookie mask currently assigned to the light.")]
        [SerializeField] Vector2 m_LightCookieSize = Vector2.one;
        public Vector2 lightCookieSize
        {
            get => m_LightCookieSize;
            set => m_LightCookieSize = value;
        }

        [Tooltip("Controls the offset of the cookie mask currently assigned to the light.")]
        [SerializeField] Vector2 m_LightCookieOffset = Vector2.zero;
        public Vector2 lightCookieOffset
        {
            get => m_LightCookieOffset;
            set => m_LightCookieOffset = value;
        }

そのため、変更するにはそちらのクラスを参照して変更する必要がある

        var data =_Light.GetComponent<UniversalAdditionalLightData>();
        data.lightCookieOffset = Vector2.zero;
        data.lightCookieSize = Vector2.one;