Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 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 /
  • Help Room /
avatar image
0
Question by Arquon · Aug 09, 2016 at 12:51 PM · staticaccessnamespace

What are efficient ways to access other scripts ?

Hi, I started to wonder what are the best ways to access other scripts on different gameObjects. I know that Find() is very inefficient, but what about namespaces and static variables ? What advantages and disadvantages do they have ?

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 Landern · Aug 09, 2016 at 01:26 PM

Hold references when you create GameObjects of commonly used objects in general. This could be done through a manager class(singleton) or any number of different solutions/patterns. If you have references to your game objects you don't need to ask unity to find them, you can corrolate between the objects by reference or other identifiers on the objects and/or their sub-components attached.

Namespaces are find and don't do jack to you when you're referencing objects in memory, this is a code separation and isolation pattern in it's simplest terms.

Static or class members(as opposed to instance members(non-static)) generally solve an issue that could be better solved with something that isn't global in general. Static methods aren't all that bad, but static variables(fields/etc) on c# classes are generally used to fix something that exists because the person implementing doesn't understand how to manage their code base and takes the easy button way out. We see that all the time here on UA as it applies to holding and displaying scores.

So to reiterate...

When creating objects i know i'm going to be accessing to check properties or whatever about i would probably add it to a manager of sorts, again singleton is fine.

 // Snip
 public int numOfCreeps = 10; // default, inspector changable
 public Creep creepPrefab; // attached in the inspector
 
 SomeCreepManager scm  = SomeCreepManager.GetInstance(); // will create or return a current instance of the SomeCreepManagerClass that is probably a static private variable internal to the class and junk
 
 void Awake()
 {
   // Create creeps
   for(int i = 0; i < numOfCreeps; i++)
   {
     Creep c = (Creep)Instantiate(creepPrefab, transform.position, transform.rotation);
     scm.Creeps.Add(c);
   }
 }

Later i can access the SomeCreepManager.Creeps to collate collisions or whatever floats your boat.

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.

Follow this Question

Answers Answers and Comments

64 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

Related Questions

Best way to communicate between scripts 4 Answers

I cant access a script that I made in Assets/Scripts from the FirstPersonCharacter script. 1 Answer

Reference Script In Other Script "type or namespace nae 'myScript' cannot..." 0 Answers

Static Array JS 0 Answers

Object reference not set to an instance of an object 0 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