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 lukas77i · Sep 03, 2011 at 11:04 AM · inspectorfunctionstringaccess

Accessing a function through its name stored in a string JS

Hi,

I need to access a function in a different script by entering it's name in Editor. Here is my setup so far:

SCRIPT 1: FnCollection.js

 //FUNCTION COLLECTION SCRIPT//
 private static var instance : FnCollection = null;
 static function I() : FnCollection   
 { 
     if(instance == null)
     {
         instance = FindObjectOfType(FnCollection);
     } 
     return instance;
 }
 
 function PrintStuff()
 {
     print("hello");
 }    



SCRIPT 2: FnRunner

 //FUNCTION RUNNER SCRIPT//
 
 var fnToRun: String;
 
 function Start()
 {
     FnCollection.I().fnToRun();
 }


However, it doesn't work because "fnToRun is not a member of FnCollection". This is obvious but how else can I access the function through it's name being retrieved from a string that is editable in the Inspector in the Unity Editor?

I need to have access like this as I plan on putting all my general functions into FnCollection and accessing them when I press buttons and from other scripts.

Thanks

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 Peter G · Sep 03, 2011 at 11:28 AM

REEEFLECTION :)

Here's the method you want.

 function Start()
 {
     var myType : Type = FnCollection.I().GetType();
     myType.InvokeMember(fnToRun , BindingFlags.Instance | 
                                   BindingFlags.Public |
                                   BindingFlags.InvokeMethod , null , FnCollection.I() , args[] );
 }

First, get the type of the meted to call. Then call invoke on it. Pass a string with the method name. Pass Binding flags to determine what members to look for. You can usually pass null for the Binder parameter. then pass in the instance you want to call it on, and finally the arguments you want to pass to the function. Null if there are none.

}

Comment
Add comment · Show 1 · 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 lukas77i · Sep 03, 2011 at 11:36 AM 0
Share

Thank you man. I've been looking for this for like 3 hours. I really appreciate your help.

avatar image
1

Answer by Waz · Sep 03, 2011 at 01:21 PM

GameObject.SendMessage would suffice in this case.

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

How to Convert a Variable Name to a String? 2 Answers

Calling non applied scripts 3 Answers

Accessing function from another script won't work 1 Answer

Can't make script work. & Script help. 1 Answer

Accessing a function within a script assinged in inspector. 3 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