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 /
avatar image
0
Question by cp305 · Sep 28, 2015 at 06:42 AM · variablesmonobehaviour

Question about creating variables to hold scripts.

Hey everybody, so I have a script that is giving me an error... I already know how to fix it, but I was just wondering if someone could explain why it doesn't work to begin with in the first place. Like why can't I create a variable of type MonoBehavior, assign it a value using GetComponet to get a script from an object, and then from that point on refer the that variable by name and start accessing the methods etc. from the other script??

The script looks like this: Note, the component PlayerSpawnController is another script attached to a game object.

public class GameState : MonoBehaviour { private GameObject player; private MonoBehaviour playerSpawnCTRL;
private GameObject randPlayerSpawn;

 void Awake()
 {
     player = GameObject.FindWithTag("Player");
     playerSpawnCTRL = GameObject.FindGameObjectWithTag("PlayerSpawnCTRL").GetComponent<PlayerSpawnController>();
 }

 // Use this for initialization
 void Start () 
 {
     randPlayerSpawn = playerSpawnCTRL.GetRandomPlayerSpawn(); // <-- this is the line with the error.
     Debug.Log (randPlayerSpawn);

     SpawnPlayer();
 }

/The compiler states that randPlayerSpawn does not contain a definition for "GetRandomPlayerSpawn" as randPlayerSpawn is of type MonoBehavior. But if I've assigned randPlayerSpawn a script using GetComponet, why can't I now refer to that script's public variables and methods etc. Like why does the above line not work given this scenario, but the following line below works. /

 void Start () 
 {
     randPlayerSpawn = GameObject.FindGameObjectWithTag("PlayerSpawnCTRL").GetComponent<PlayerSpawnController>().GetRandomPlayerSpawn();
     Debug.Log (randPlayerSpawn);

     SpawnPlayer();
 }

} Thanks for your help!

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 cjdev · Sep 28, 2015 at 07:14 AM

The reason it's not working is because your script isn't of type MonoBehaviour, it inherits from it. The difference is that the functions from the MonoBehaviour class are available to the inheriting class, but if you were to treat the class as a MonoBehaviour object then it wouldn't know about any of the functions you defined in your base class because they aren't also defined in Monobehaviour.

In order to call the function from your script you need to store it in a variable of it's own type, PlayerSpawnController. Then you'll have access to all of the functions and variables you've defined in that type.

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

4 People are following this question.

avatar image avatar image avatar image avatar image

Related Questions

Why does monobehavior in if statement compiles? 1 Answer

Access variables,method from a Mono Behaviour without static use. -1 Answers

Monobehaviour resets variables after the initialization cycle 0 Answers

Public variable containing script 2 Answers

Trying to get access to variables in the editor script 4 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