I have some prefabs and if I change a value of a script on them - as to be expected - it turns bold meaning if I apply, that value will be input for all of my prefabs. The problem is, I wish to have a value changed only on the instance and then change something else and apply only the latter. How can I do that? So how can I specify which values are "applyable" and which are not?
1 Answer
\$\begingroup\$
\$\endgroup\$
2
The only way I know to do what you want is to change the value on the prefab, not on the instance.
- Select your instance and change the value of the field you want
- Once the value is correct, click on "Select" at the top of the inspector
- Change the value of the prefab's field to the exact same value of your instance's
- Select your instance, right click on the field you have changed an click on "revert to prefab"
It's quite fastidious, I concede, but the prefabs system of Unity needs to be reworked IMHO.
-
\$\begingroup\$ Yeah, this is what I came up with on my own, but it seems that's just about my only hope :/ Well I love Unity, but I think a lot of things need reworking (or I just have a difference taste). \$\endgroup\$– agiroCommented Aug 8, 2017 at 13:54
-
1\$\begingroup\$ You could also duplicate the object with Ctrl+D, use the method in step 4 to revert the fields that you do not want to apply to the prefab, then hit Apply to commit the remaining changes, then delete the clone. If you have more properties you want to apply than you have instance-specific properties, this might be fewer clicks. ;) \$\endgroup\$– DMGregory ♦Commented Aug 8, 2017 at 17:23