I have a game object(object) with a script component(myscript) attached.

I have a reference to myscript component through getComponent, and I want to change the transform of the gameObject the script is attached to.

myscript.gameObject.transform = (new value);

The above code gives me error,

Property 'UnityEngine.GameObject.transform' is read only.

Is there a way to get a read-write version?

  • \$\begingroup\$ hmm.. it seems that I can just use myscript.transform but it also gives the same read-only error. \$\endgroup\$ – onguarde Nov 6 '12 at 9:42
  • \$\begingroup\$ What value do you want to change? Position? Try assigning to transform.position. Local rotation? Try assigning to transform.localRotation. \$\endgroup\$ – Eric Nov 6 '12 at 9:49

Transform is read-only C# property. I guess it could be defined pretty most this way:

public Transform transform{get;}

So, you can't assign directly a Transform to another Transform (you don't have set accessor defined). You are forced to assign individual fields of each Transform to the other.

For example:

myscript.gameObject.transform.rotation = otherScript.gameObject.transform.rotation;
myscript.gameObject.transform.position = otherScript.gameObject.transform.position;
| improve this answer | |
  • \$\begingroup\$ FIY, it doesn't have a setter defined at all, and getter reads the value from native code. \$\endgroup\$ – Nevermind Nov 6 '12 at 13:08

If by "change the transform" you mean "change position/rotation/scale" of my object, you have to change these individually:

gameObject.transform.position = ...;
gameObject.transform.rotation = ...;
gameObject.transform.localScale = ...; // note that you CAN'T change global scale, as it's not actually a vector

If by "change the transform" you mean "change my object's parent", you have to change parent propery:

gameObject.transform.parent = someOtherTransform;
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.