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 MonsterGenome · Dec 01, 2016 at 07:41 PM · c#unity 5aistrings

Can a c# script in unity be coded to alter itself?

I'm using it for something very simple, but hypothetically this concept could be applied to very complex scripts that basically "learn" from the player. Can I incorporate variable strings in a c# code so that the strings can then refer to or be stored as variable names for later use? Here's my current script:

     public void SendBird (GameObject bird)
     {
         PigeonController pigeonController = bird.GetComponent<PigeonController>();
         string recipient = pigeonController.recipient;
         string obtain1 = (recipient + "Imp");
         string obtain2 = (recipient + "Act");
         string obtain3 = (recipient + "Tar");
         obtain1 = assignWords.imperative;
         obtain2 = assignWords.action;
         obtain3 = assignWords.target;
     }

in this case, I have six possible recipients: soldier, medic, sniper, gunner, tank, and air, who all can receive an imperative, an action, and a target. The reason pigeons/birds come into play is that messages with the three word types are sent to those soldiers on the battlefield by the player. Each of the six birds has a string variable called "recipient" in its PigeonController script; this string is like a tag (the reason it is not a tag is because the tag for each is "Pigeon"). "assignWords" refers to the script of the letter being handed to the bird which contains the associated words.

Could I set up something like the above to take the recipient string, add the word type to it, and then use that new string to access string variables like "airImp" or "tankAct" or "soldierTar"? It would be much less data than having to have six if statements, each with several lines outlining which string transfers where.

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 Glurth · Dec 01, 2016 at 09:31 PM 0
Share

You CAN create your own state-machine: like a virtual computer. Such a state machine would perform various operations based upon, and using, the data: but you would need to define this data->operation relationship exactly (effectively an op-code set), which can be quite a large task.

1 Reply

· Add your reply
  • Sort: 
avatar image
2

Answer by Bunny83 · Dec 01, 2016 at 07:56 PM

No, scripts are compiled to IL code so the final version of your game doesn't even contain any source code. The question is why you actually have 6 different classes or variables for the same kind of information? You may want to read some material about inheritance and polymorphism.

We don't know how your PigeonController class actually looks like and where / in which was you need that information. If you want a more specific answer you should edit your question and add more details.

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 MonsterGenome · Dec 02, 2016 at 01:10 AM 0
Share

PigeonController.recipient is actually just a public string that is different for each of the six pigeons. Each pigeon sends a different message to a different part of the GameController (not shown) which sets a different set of reactions in motion which then returns six distinct messages to the player for each of the six pigeon recipients.

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

8 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

How can i avoid the enemy to sight me through walls? 1 Answer

Coroutines randomly stop working 0 Answers

How do I print each element of a string array separately to a UI text box 2 Answers

Monster AI patrol an idle 0 Answers

A* pathfinding for dynamic obstacles and player made blockages? 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