• Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by jlear · Jun 21, 2015 at 11:01 AM · prefab-instance

Editor Script: Prefab instance Transform change not reflected in Scene Hierarchy

Any help on this will be much appreciated.

I have created a script to perform the following steps:

  1. Find an existing Prefab (fromPrefab)

  2. Create a new prefab and copy across the old (NewPrefab)

  3. Instantiate a Game Object from the copied prefab, in step 2.

  4. Change the Transform position on the instance (step 3).

However, the Transform in step 4 is not reflected in the Editor Scene hierarchy. The Game Object in Step 3 has a position of the Prefab created in step 2. It is not updated to the new position in step 4. ie. (9,9,9)

Some notes:

  • I have used the PrefabUtility to perform the prefab operations as documented.

  • I have assigned a new Vector 3 to the position.

Here's the code.

     [MenuItem("TEST/TestPrefabCopy")]
     public static void TestPrefabCopy()
     {
         string[] searchInFolders = { "Assets/Prefabs" };
 
         // Find the prefab - Works OK
         string[] GUIDs = AssetDatabase.FindAssets("fromPrefab", searchInFolders);
         string assetPath = AssetDatabase.GUIDToAssetPath(GUIDs[0]);
         GameObject fromPrefab = (GameObject)AssetDatabase.LoadAssetAtPath(assetPath, typeof(GameObject));
 
         // Create a new prefab and copy from old prefab - Works OK
         string prefabPath = "Assets/Prefabs/NewPrefab.prefab";
         Object toPrefab = PrefabUtility.CreateEmptyPrefab(prefabPath);
         PrefabUtility.ReplacePrefab(fromPrefab, toPrefab, ReplacePrefabOptions.Default);
 
         // Instantiate Prefab - Works OK
         GameObject instantiatedObj = PrefabUtility.InstantiatePrefab(toPrefab) as GameObject;

         // THIS DOES NOT SET THE POSITION ON THE NEW PREFAB INSTANCE IN THE SCENE
         instantiatedObj.transform.position = new Vector3(9,
                                                          9,
                                                          9);
     }

I would be really grateful for help from anyone more experienced. I really don't understand what is happening in this situation. Thanks.

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by XGT08 · Mar 19, 2016 at 04:45 PM

@jlear I know this is an old question, but I recently stumbled into a similar problem.

In my case I was accidentally changing the name of the prefab prior to instantiating it. After I removed the name change code, it worked perfectly. It seems that if you change a prefab property before instantiating the prefab, it causes trouble when modifying the transform inside the scene. Don't know why that is though.

Now looking at your code, I can not see any sign of you trying to modify the prefab property. However, I can see you are using ReplacePrefab. Try to see if removing that part works. So essentially just leave the instantiation part and the transfom position change and see if it works.

If you managed to find a solution, please do let me know. I'm really curious as to what was causing it.

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

3 People are following this question.

avatar image avatar image avatar image

Related Questions

Experiencing NullReferenceException only in build with Coroutine 1 Answer

How to create Cirlce/Box but not Collider? 1 Answer

Timer not working in prefabs 0 Answers

Prefab Duplication issue 1 Answer

How to instantiate a prefab declared in one script, from another script 2 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges