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
0
Question by $$anonymous$$ · Nov 10, 2014 at 03:52 AM · referencestaticdontdestroyonload

Static calls to Static GameObject

I have a GameObject called GameManager. I have made it static. It also has DoNotDestroyOnLoad(). Is there a way I can access it by saying GameManager.DoThis() from any scene?

Comment
Add comment · Show 2
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 fafase · Nov 10, 2014 at 05:26 AM 2
Share
  "I have a GameObject called Game$$anonymous$$anager. I have made it static"

Do you mean you ticked Static in the Inspector? In this case, static is not related to program$$anonymous$$g but just inform the engine that this objecst is static as in not moving.

avatar image $$anonymous$$ · Nov 12, 2014 at 04:13 AM 0
Share

That is exactly what I was thinking. Thanks for the clarification!

2 Replies

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

Answer by Kiwasi · Nov 10, 2014 at 05:20 AM

This is called the singleton pattern. Its typically done like this.

 public GameObject instance;
 
 void Awake (){
     if(instance){
         Destroy(gameObject);
         return;
     }
     instance = gameObject;
     DontDestroyOnLoad(gameObject);
 }

You can go one step further and make instance a property that will create the GameObject the first time it is called (lazy loading).

Note that you cannot have a true static GameObject. You can only fake it.

Comment
Add comment · Show 2 · 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 $$anonymous$$ · Nov 12, 2014 at 04:16 AM 0
Share

Darn. Was hoping to avoid using a singleton. But thanks :) How would I access this gameObject? By using ScriptName.instance?

avatar image Kiwasi · Nov 12, 2014 at 08:46 AM 1
Share

Yup. Nothing inherently wrong with a singleton. You can avoid the singleton requirements by using a preloader. But its worth having the singleton, just in case.

avatar image
0

Answer by V_IPIN · Nov 10, 2014 at 04:27 AM

Once Try this

 public class GameManager : MonoBehaviour {
     
     public static void DoSomeThing(){
         Debug.Log("I will Call this method from another script...");
     }
 }

Another Script

 public class AccessMethod : MonoBehaviour {
 
     // Use this for initialization
     void Start () {
        GameManager.DoSomeThing();
     }
 
 }


Comment
Add comment · Show 2 · 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 $$anonymous$$ · Nov 10, 2014 at 04:49 AM 0
Share

Yes, this works for a static method, but I want it for a static gameObject. So what I am looking for would require Game$$anonymous$$anager.gameObject.DoSomething(); with the example you provided. I am just trying to access the GameObject directly...not one of its scripts.

avatar image V_IPIN · Nov 10, 2014 at 05:00 AM 0
Share
 Once try this...
     
     public class Game$$anonymous$$anager : $$anonymous$$onoBehaviour {
         public static Game$$anonymous$$anager instance;
         public GameObject DisableObject;
         void Start(){
             instance = this;
         }
     }
 
 
     public class Access$$anonymous$$ethod : $$anonymous$$onoBehaviour {
     
         // Use this for initialization
         void Start () {
             Game$$anonymous$$anager.instance.DisableObject.SetActive(false);
         }
     
     }
 
 
 
 

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

27 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

Related Questions

c# Static class dont destroy on load not working 1 Answer

Use Of Static Variables 1 Answer

Do you have to set a object reference for every script? 0 Answers

Restoring Static Variables after DontDestroyOnLoad 1 Answer

Methods of Accessing scripts - performance & neatness 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