• 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 Oceris · May 05, 2018 at 07:37 PM · scripting problemgameobjectinitializationbegginer

Initialization of prefabs

Hey, i have an issue with understanding the way that prefabs are initialized. I have two scripts, one which initializes prefabs in a for loop, and the second one is attached to each prefab and is being executed in Start method. Is it normal that the second script is being executed after the whole for loop has been executed? For example:

  // First script Update method
   private void Update() {
  for (var i = 0.5f; i < 3; i++) {
         Debug.Log('Loop' + i);
         PrefabUtility.InstantiatePrefab(tilePrefab as GameObject) as GameObject;
     } 
 }

 //Second script start method
 private void Start() {
      Debug.Log('Prefab start');
 }

Will give me output:

 Loop 0,5 
 Loop 1,5
 Loop 2,5
 Prefab start
 Prefab start
 Prefab start

instead of expected:

 Loop 0,5
 Prefab start
 Loop 1,5
 Prefab start
 Loop 2,5
 Prefab start

Is it supposed to work like that?

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 Bunny83 · May 06, 2018 at 12:53 AM

Start is called right before the first Update would be called on the object. Since you do the instantiate inside Update of your other script, Start of the instantiated objects will be called the next frame. You may want to use the Awake method. Awake is called before the Instantiate method returns. However it's only called when the prefab is active.


However your code looks really strange. The PrefabUtility is an editor class which can only be used in the editor. It's meant to be used at edit time only. At edit time no Start or Awake methods will be called (unless you have added the ExecuteInEditMode attribute to your script). What is this script supposed to do? where should it be used?

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

The best place to ask and answer questions about development with Unity.

To help users navigate the site we have posted a site navigation guide.

If you are a new user to Unity Answers, check out our FAQ for more information.

Make sure to check out our Knowledge Base for commonly asked Unity questions.

If you are a moderator, see our Moderator Guidelines page.

We are making improvements to UA, see the list of changes.



Follow this Question

Answers Answers and Comments

83 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Ingame music goes on but it should stop when you die (DeathCanvas Activate) or win (LevelComplete Canvas Activates) 1 Answer

Change Target from Script in GameObject with another Script 1 Answer

i am making an increment of one when user clicks a game object, trying to decrement the counter if the same game object is clicked again 1 Answer

Issues cycling through Game objects in dictionary and activating currently selected objects script 1 Answer

How do i change a sprite when another gameobject with the same prefab is colliding / is near 1 Answer

  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges