C# Get & Set...Set not executing?

Oh I am not new to mutators/assessors but I am definitely missing something here.
The setter is not being called. I even put a Debug.Log() as the first line (before the if) and nothing.

So my question is what am i missing? (CODE UPDATED)

using System;
using UnityEngine;
using System.Collections;

namespace UnityStandardAssets.Utility
{
	public enum ShapeColorEnum {
		Blue,
		Green,
		Orange,
		Purple,
		Red,
		Yellow
	}

	[ExecuteInEditMode]
	public class ShapeController : MonoBehaviour
	{
		//Grab reference once, for performance
		private Renderer rend;

		//Show in the inspector
		[SerializeField]
		[Tooltip("Change the color of the object we are attached to")]
		private ShapeColorEnum shapecolor = ShapeColorEnum.Blue;

		private float m_LastRealTime;

		public ShapeColorEnum ShapeColor { 
			get { 
				return shapecolor; 
			}
			set {
				//Ignore if no color change
				if (value == shapecolor)
					return;
				//set new color value
				shapecolor = value;

				//Update the objects material
				switch (shapecolor) {
					case ShapeColorEnum.Blue:
						rend.material = material [0];
						Debug.Log ("Color changed to Blue");
						break;
					case ShapeColorEnum.Green:
						rend.material = material [1];
						Debug.Log ("Color changed to Green");
						break;
					case ShapeColorEnum.Orange:
						rend.material = material [2];
						Debug.Log ("Color changed to Orange");
						break;
					case ShapeColorEnum.Purple:
						rend.material = material [3];
						Debug.Log ("Color changed to Purple");
						break;
					case ShapeColorEnum.Red:
						rend.material = material [4];
						Debug.Log ("Color changed to Red");
						break;
					case ShapeColorEnum.Yellow:
						rend.material = material [5];
						Debug.Log ("Color changed to Yellow");
						break;
					default:
						break;
				}
			}
		}

		[Tooltip("Six (6) Predefined materials to use for the object we are attached to")]
		public Material[] material = new Material[6];

		[Tooltip("Automatically move the object through world space by these amounts each update")]
		public Vector3andSpace moveUnitsPerSecond;

		[Tooltip("Automatically rotate the object these amounts each update")]
		public Vector3andSpace rotateDegreesPerSecond;

		public bool ignoreTimescale;


		private void Start()
		{
			rend = GetComponent<Renderer> ();
			m_LastRealTime = Time.realtimeSinceStartup;
		}


		// Update is called once per frame
		private void Update()
		{
			float deltaTime = Time.deltaTime;
			if (ignoreTimescale)
			{
				deltaTime = (Time.realtimeSinceStartup - m_LastRealTime);
				m_LastRealTime = Time.realtimeSinceStartup;
			}
			transform.Translate(moveUnitsPerSecond.value*deltaTime, moveUnitsPerSecond.space);
			transform.Rotate(rotateDegreesPerSecond.value*deltaTime, moveUnitsPerSecond.space);
		}


		[Serializable]
		public class Vector3andSpace
		{
			public Vector3 value;
			public Space space = Space.Self;
		}
	}
}

Where do you actually set or get the “ShapeColor” property? It’s not in your script.

Keep in mind that the Unity editor doesn’t support properties at all. It soley work directly on serialized data which in your case is your “shapecolor” field. Changing things in the inspector will never use properties.