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 Limesta · Jan 02, 2015 at 07:27 AM · errorstatic

How to access script from another script in an object?

So I am having trouble with getting some information in my game I am working on. Basically my player has a script called 'Stats', and it has allot of public static variables that I want my projectiles to access when they spawn.

My PlayerTests' Stats script: using UnityEngine; using System.Collections;

 public class Stats : Component
 {
     public static float PlayerForce = 500.0f;
     public static float PlayerMass = 500.0f;
     public static float PlayerHull = 10.0f;
     public static float PlayerSheild = 0.0f;
 
     public static float GunFirerate = 5.0f;
     public static float ShotSize = 1.0f;
     public static float ShotSpeed = 50.0f;
     public static float ShotDamage = 2.0f;
 
 }

My Projectile Script:

 using UnityEngine;
 using System.Collections;
 
 public class ProjectileSpawn : MonoBehaviour {
 
     public static float damage;
 
     void Start () {
         GameObject Player = GameObject.Find ("PlayerTest");
         Stats PlayerStats = Player.GetComponent<Stats>();
 
         damage = PlayerStats.ShotDamage;
 
         var heading = Player.transform.position - transform.position;
         
         var distance = heading.magnitude;
         
         var direction = heading / distance;
 
         rigidbody2D.AddForce (direction * -PlayerStats.ShotSpeed);
     }
 

I get these 3 errors:

 Assets/Scripts/ProjectileSpawn.cs(12,38): error CS0176: Static member `Stats.ShotDamage' cannot be accessed with an instance reference, qualify it with a type name instead
 
 Assets/Scripts/ProjectileSpawn.cs(20,64): error CS0176: Static member `Stats.ShotSpeed' cannot be accessed with an instance reference, qualify it with a type name instead

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 Limesta · Jan 02, 2015 at 07:37 AM 0
Share

I fixed the Error cs0309 by adding : Component to the player scripts in the stats part

1 Reply

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

Answer by Landern · Jan 02, 2015 at 07:43 AM

You've made them static, you do not get an instance and access it that way, they live on the class not the instance.

You can access the fields anywhere by... as an example:

 damage = Stats.ShotDamage;
 
 rigidbody2D.AddForce (direction * -Stats.ShotSpeed);

Where Stats is the name of the class(remember, you made them static and not part of an instance(where you use new or instantiate it) and the normal property name.

And in this particular case, there isn't a good reason to have it derive from Component, because your implementation makes the static fields and exist that apply across the board.

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

26 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

Related Questions

Parsing Error CS8025 1 Answer

NullReferenceException Error how to solve? 2 Answers

Invalid IL code error when calling static function 1 Answer

Error Assigning GameObject To Var Inside A Class 3 Answers

Displaying a static variable from another script with OnGUI 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