title: How is Vector3 implemented, why are the properties readonly?
body: <pre><code>Vector3 v = new Vector3(1, 1, 1);
  v.x = 5;
  </code></pre>
  <p>Why can't I do this? I have to do <code>v = new Vector3(5, v.y, v.z);</code></p>
  <p>I assume the reason behind this is for performance. But I can't guess at why this is necessary.</p>
  <hr />
  <h3>Edit:</h3>
  <p>I lied, this actually does work. The <code>Vector3</code> I've been working with <code>transform.position</code> always returns a copy of itself, which is why setting values on it doesn't work. Some kind of Unity magic.</p>