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 GothSeiDank · Jul 10, 2017 at 10:44 PM · c#scripting beginner

How do I access the instance of a script held by a GameObject?

I am putting myself through learning Unity atm and I got an issue. I have a class GameVariablesController. That is only a C# Script. This is supposed to hold all game variables that need to be saved. Now I want to access them. However, I am not sure how to do this. In Game Maker Studio, I would make an Object, add it to the scene and access this one via the game object list. So I tried to do the same in Unity.

For finding the GameObject, I need to search for it and GameObject.Find(); returns me the object. However, it does not contain the definitions for the functions the script is holding. So my question is, how do I access the instance of that script? I am not quite sure how this works in Unity.

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

2 Replies

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

Answer by UnityCoach · Jul 10, 2017 at 11:13 PM

If there's only one instance of that script in the scene, you can simply use

 GameVariablesController gvc = FindObjectOfType<GameVariablesController>();

It saves you from finding the bearer. The component has to be on a game object in the scene though.

Comment
Add comment · Show 3 · 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 Jwizard93 · Jul 11, 2017 at 01:47 AM 0
Share

To clarify, finding the bearer refers to using GameObject.Find to first find the object and then you would need to use object.GetCompnent();

ANother way to find the bearer is what I like to do:

 public GameVaribaleController gvc;

Declare this at the top of the script that needs the reference. Then a field will be created in the inspector on any object with this script attached. You can drag the GameVariableControllerObject into the field to finalize your reference.

avatar image UnityCoach Jwizard93 · Jul 11, 2017 at 06:58 AM 0
Share

That's right, there are many ways to do the same thing.

This depends on if the object that needs to get access to the component is in the scene at the beginning, or if it's a Prefab that will be instantiated later for example. In which case, you can't reference a scene object from a Prefab.

You can also imagine that the required object is a Prefab, that could be automatically instantiated when needed (lazy initialisation), and that you could implement as a Singleton (unique instance) that instantiates itself when it's accessed.

Unity is so flexible..

avatar image GothSeiDank UnityCoach · Jul 11, 2017 at 10:57 AM 0
Share

Hey, I didn't even think about using a Singleton. I think that is the most elegant solution. Saves me the few nanoseconds looking for the object and is overall more stable towards user error, such as forgetting to add the script to something :D. Thanks.

avatar image
0

Answer by GothSeiDank · Jul 11, 2017 at 11:00 AM

To add to the answer @UnityCoach has given, I am using this singleton to solve the issueusing

 System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 //---------------------------------------------
 public class GameVariablesController
 //---------------------------------------------
 {
     //---------------------------------------------
     // Private Members
     //---------------------------------------------
     private static GameVariablesController instance = null;
     private static readonly object padlock = new Object();
 
     //---------------------------------------------
     // Public Members
     //---------------------------------------------
     public float playerShipMaxSpeed        {get;set;}
     public float playerBulletMaxSpeed     {get; set;}
 
     //---------------------------------------------
     GameVariablesController()
     //---------------------------------------------
     {
         playerShipMaxSpeed = 40;
         playerBulletMaxSpeed = 900;
     }
 
     //---------------------------------------------
     public static GameVariablesController Instance
     //---------------------------------------------
     {
         get
         {
             lock(padlock)
             {
                 if ( instance == null )
                 {
                     instance = new GameVariablesController();
                 }
                 return instance;
             }
         }
     }        
 }




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

391 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 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 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 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 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

How to add a editing option to variables in a script in Inspector? 0 Answers

trying to fade alpha based on the Y angle using a range so every 90 degrees the material changes but fades back n forth 0 Answers

How to make a random object generator that responds to simple touch? 0 Answers

Detect if UI Button is pressed 0 Answers

Settings menu of main menu not updating in settings menu of pause menu. Unity C#, 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