Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • 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
1
Question by johnboydump · Aug 13, 2013 at 10:59 AM · javascriptprefabtaginstance

Identifying instances of prefabs in code

Hi

I have a script attached to a prefab (called wall) which allows instances of itself to be created. Each wall created is given a unique ID. The relevant code (js) is given below:

 //This is the Prefab reference
 public var wallPrefab : Transform;

 //Each wall has an ID and this is the highest one
 public static var maxWallIndex : int = 0;
 public var wallIndex : int;    //this wall index (starts at 1)
 
 function createNew(startPos : Vector3, length : int, rot : double) : int
 {
     //create new instance of wall
     var newWall : Transform;
     newWall = Instantiate(wallPrefab, startPos, Quaternion.identity);
 
     //...
 
     //Set the ID for this instance and update the total number
     maxWallIndex++;
     wallIndex = maxWallIndex;
 }

I need to create and modify walls dynamically from a few other scripts, so need to be able to identify and access the member functions of a particular instance of this prefab.

My original plan was to create tags dynamically then use FindGameObjectsWithTag to access the correct instance. However since you cannot create tags in code, and GameObject.Find returns just one object, I am a little stumped with this one. Any thoughts are greatly appreciated!

EDIT: I have since got around this problem by dynamically naming the instances. However any more elegant solutions would be welcomed!

Comment
Add comment · Show 1
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
avatar image ahaykal · Aug 13, 2013 at 11:21 AM 0
Share

gameObject.tag = "Player"; This is how you "create" tags dynamically :)

1 Reply

· Add your reply
  • Sort: 
avatar image
0
Best Answer

Answer by Narv · Aug 13, 2013 at 11:17 AM

Instead of having each prefab keep track of all the other prefabs of the same name (which seems to be what you are trying to explain), you could use a single script to manage all prefab instances. Then manage a generic List and when you want to remove from there, you can use the unique identifier for each object/component in the scene that unity already has in GetInstanceID()

http://docs.unity3d.com/Documentation/ScriptReference/Object.GetInstanceID.html

I use this in a game im making now with enemy tanks being stored in a master list and when new ones are spawned, they get added to the list, and removed from the list when destroyed so that I can iterate on all active enemies.

If you do this, make sure you do gameObject.GetInstanceID() if you are storing game objects as just "GetInstanceID()" by itself will return the ID of the script component.

Comment
Add comment · Show 1 · 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
avatar image johnboydump · Aug 13, 2013 at 12:13 PM 0
Share

Yep that is a much better way of going about it. I now have a "Wallmanager" script which is a lot easier. Thanks very much for the help.

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.

Follow this Question

Answers Answers and Comments

17 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

Related Questions

Affect All Instances Of A Prefab 3 Answers

Change in a variable affects all instances 1 Answer

Script ignores prefabs/duplicates of generic object 1 Answer

"For"-Loop only works for final element in array 1 Answer

How to remove a specific instance of a prefab from List? 1 Answer


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