Изменить цвета кнопки интерфейса через скрипт

Я пытаюсь изменить цвета на кнопке пользовательского интерфейса, используя эту строку кода.

prev.GetComponent<Button>().colors.normalColor = new Color(0.0f, 0.0f, 0.0f, 1.0f);

но я получаю эту ошибку

Assets / _Scripts / OptionSwitch.cs (28,53): ошибка CS1612: Невозможно изменить возвращаемое значение типа значения UnityEngine.UI.Selectable.colors. Рассмотрите возможность хранения значения во временной переменной

Я пытался сохранить как кнопку, так и цвет в качестве переменных, прежде чем вызывать их, но это не меняет код ошибки.

РЕДАКТИРОВАТЬ:

using UnityEditor;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using UnityEngine.Sprites;

public class OptionSwitch : MonoBehaviour {

    ColorBlock colorBlock = new ColorBlock();
    colorBlock.normalColor = new Color(0.0f, 0.0f, 0.0f, 1.0f);

    [MenuItem ("GameObject/UI/Switch")]
    static void Switch(){

        if (GameObject.FindObjectOfType (typeof(Canvas)) != null) {

            Canvas canvas = (Canvas)GameObject.FindObjectOfType (typeof(Canvas));

            // Define Previous Button
            GameObject prev = new GameObject ("Previous", typeof(Button));
            prev.layer = 5;
            prev.AddComponent<Image> ();
            prev.transform.parent = canvas.transform;

            prev.GetComponent<Image> ().sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>("UI/Skin/UISprite.psd");
            prev.GetComponent<Button>().colors = buttonColors;

            // Define Previous Button Image
            GameObject previm = new GameObject("Previous Image", typeof(RawImage));
            previm.layer = 5;
            previm.transform.parent = prev.transform;

        } else {

            // Create Canvas
            GameObject canvas = new GameObject("Canvas", typeof(Canvas));
            canvas.AddComponent<CanvasScaler> ();
            canvas.AddComponent<GraphicRaycaster> ();
            canvas.layer = 5;
            canvas.GetComponent<Canvas> ().renderMode = RenderMode.ScreenSpaceOverlay;
            canvas.transform.localPosition = Vector3.zero;

            // Create Event System
            GameObject eventsystem = new GameObject("EventSystem", typeof(EventSystem));
            eventsystem.AddComponent<StandaloneInputModule>();
            eventsystem.AddComponent<TouchInputModule>();

        }

    }

}

Ответы на вопрос(2)

Ваш ответ на вопрос