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 Daniel-Garcia-S-V · Jul 11, 2019 at 08:24 PM · c#instantiateprefabsinstantiate prefabprefab-instance

How to manipulate a variable of a prefab script (instantiated) while the game is runnning .

This is kind of hard to explain but I hope you all can understand me... I have this project where the user (player) can manipulate some characteristics of the objects on scene, when they click on it, a UI menu is opened and I want them to have the option to change a variable of that gameobject script by interacting with the menu. And, these objects are also prefabs instantiated by the player on scene, and there will be multiple clones of the same prefab, where the player can manipulate each one separately by clicking them. The thing is, how can I get access to that variable in the prefab script in order to be changed when the object is clicked. All of this of course when the game is running. Click detection script:

 public class Seleccionar : MonoBehaviour
 {
     public GameObject cambiarCargaUI;
     public Text cargaText;
 
     private pCargada carga;
 
     private void Start()
     {
         carga = GetComponent<pCargada>();
         cambiarCargaUI.gameObject.SetActive(false);
     }
 
     void Update()
     {
         if (Input.GetMouseButtonDown(0))
         {
             RaycastHit hitInfo = new RaycastHit();
             bool hit = Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hitInfo);
             if (hit)
             {
                 if (hitInfo.transform.gameObject.tag == "Particula")
                 {
                     //
                     //Acces to the gameObject script and manipulate a specific variable of it.
                     //
 
                     cambiarCargaUI.gameObject.SetActive(true);
                     Debug.Log("Tocaste: " + hitInfo.transform.gameObject.name);
                 }
 
                 else
                 {
                     cambiarCargaUI.gameObject.SetActive(false);
                 }
             }
 
         }
     }

GameObject script to access:(Variable: carga)

 public class pCargada : MonoBehaviour {
 
     public float carga = 1f;
     public Material matProton;
     public Material matElectron;
     public Material matNeutro;
 
     private void Start()
     {
         GetComponent<Renderer>().material = matNeutro;
     }

What do you recommend me to do or investigate to achieve it? I have researched a lot and I haven´t found anything alike, now I don´t even know how to search for it. If you know how to do it or do you have any advice, what should I do?

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
1
Best Answer

Answer by ADiSiN · Jul 14, 2019 at 12:48 AM

I will provide you simple example with only 1 variable so you can see the one of possible solutions to achieve it and implement it in your project.

So, we will have 3 scripts ( you can actually make it in 2 or 1 scripts, but it is better to keep functions separated by logic in different scripts, at least will be easier to navigate for you in future)

This is the first script. You can put it on anything you want it should be only 1 in game.

 using UnityEngine;
 
 public class ClickDetecter : MonoBehaviour
 {
     public GameObject UICanvas; // Canvas that pop-up when we click on object to adjust variables
     public ChangeParameters changeParameters; // Script to help us transfer data and communicate with selected object
 
     Camera c_Cam; // Camera
 
     private void Start()
     {
         c_Cam = Camera.main; // Assigning camera - Optimization purpose, because it is better not to use Camera.main each update
     }
 
     void Update()
     {
         if (Input.GetMouseButtonDown(0)) // Check for left mouse button input
         {
             RaycastHit hit;
 
             if(Physics.Raycast(c_Cam.ScreenPointToRay(Input.mousePosition), out hit))
             {
                 if (hit.transform.CompareTag("Particula")) // Check if clicekd object has our aiming tag - Compare.tag has better perfomance than gameObject.tag comparison
                 {
                     UICanvas.SetActive(true); // Enable UI canvas to adjust variables
                     changeParameters.LoadNewData(hit.transform.gameObject); // Transfer hitted object to our another script
                 }
             }
         }
     }
 }

So, basically, we just check if we hit object with right tag and if we do then we enable UI canvas where we will adjust variables and send to our second script our hitted gameobject.

 using UnityEngine;
 
 public class ChangeParameters : MonoBehaviour
 {
     public float f_size;
 
     GameObject g_SelectedObject;
     InstatiatedParamateres data;
     Vector3 v3_StartScale;
 
     /* Take and assign variables */
     public void LoadNewData(GameObject selectedObject)
     {
         data = selectedObject.GetComponent<InstatiatedParamateres>();
 
         g_SelectedObject = selectedObject;
         v3_StartScale = selectedObject.transform.localScale;
 
         f_size = data.size;
     }
 
     /* When player hit + or - button */
     public void ChangeSize(int amount)
     {
         f_size +=amount;
 
         g_SelectedObject.transform.localScale = v3_StartScale * f_size;
     }
 
     /* When player hit save button - we save changed data */
     public void SaveData()
     {
         data.size = f_size;
     }
 
     /* When player click cancel button - we reset scale and also private variables*/
     public void CancelChanges()
     {
         g_SelectedObject.transform.localScale = v3_StartScale * data.size;
 
         f_size = data.size;
     }
 }

This is where we do all changes. We assign variables and create functions to be able adjust variables via UI buttons, for example. Also we can ahve function to save data or to reset all changes. This script you can also put on whatever you would like and you need only 1 in game.

Our GameObjects will have simple script with data.

 using UnityEngine;
 
 public class InstatiatedParamateres : MonoBehaviour
 {
     public float size = 1f;
 }

So, the logic is that we have gameobjects with data and with our click we send that data to our main script where via UI we do changes.

Feel free to ask if something unclear.

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

641 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 avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image 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 Instantiate a GameObject from a ScriptableObject piece of script? 0 Answers

Instanciate prefab responsively 1 Answer

how Load Prefabs after build 0 Answers

Need help in instantiating at desired position. 1 Answer

how can I improve my "character select" script? 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