title: How to set different value variables for each game object using same script in Unity3d
body: <p>I am quite new into Unity and I am trying to create three different objects having one script and set a <strong>value</strong> variable for each instance.</p>
  
  <p>I have drag and drop the script to three of the objects within my scene and set from the unity ui slots value variable to different values for each object!</p>
  
  <p>Current code looks like:</p>
  
  <pre><code>using System.Collections;
  using System.Collections.Generic;
  using UnityEngine;
  using UnityEngine.UI;
  
  
  public class DragBall : MonoBehaviour {
  
      public GameObject gameObjectToDrag;
      public Text txt;
  
  
      public int value;
  
      public Vector3 GOcenter;
      public Vector3 touchPosition;
      public Vector3 offset;
      public Vector3 newGOcenter;
  
      RaycastHit hit;
  
      public bool draggingMode = false;
  
      // Use this for initialization
      void Start () {
  
      }
  
      // Update is called once per frame
      void Update () {
          if (Input.GetMouseButtonDown(0)) {
              Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
              if (Physics.Raycast(ray, out hit))
              {
                  gameObjectToDrag = hit.collider.gameObject;
                  GOcenter = gameObjectToDrag.transform.position;
                  touchPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
                  offset = touchPosition - GOcenter;
                  draggingMode = true;
              }
          }
  
          if (Input.GetMouseButton(0)) {
              if (draggingMode) {
                  touchPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
                  newGOcenter = touchPosition - offset;
                  gameObjectToDrag.transform.position = new Vector3(newGOcenter.x, 3, newGOcenter.z); // 0 means Y axis , so let the ball go horizontally only
              }
          }
  
          if (Input.GetMouseButtonUp(0)) {
              draggingMode = false;
          }
  
          Debug.Log(this.value);
          txt.text = this.value + "";
      }
  }
  </code></pre>
  
  <p>Edited Code:</p>
  
  <pre><code>using System.Collections;
  using System.Collections.Generic;
  using UnityEngine;
  using UnityEngine.UI;
  
  
  public class DragBall : MonoBehaviour {
  
      public GameObject gameObjectToDrag;
  
      public Text txt;
  
      public Vector3 GOcenter;
      public Vector3 touchPosition;
      public Vector3 offset;
      public Vector3 newGOcenter;
  
      RaycastHit hit;
  
      public int value;
  
      public bool draggingMode = false;
  
      // Use this for initialization
      void Start () {
          if (this.gameObjectToDrag.name == "Ball1")
          {
              this.value = 1;
          }
          else if (this.gameObjectToDrag.name == "Ball2")
          {
              this.value = 2;
          }
          else if (this.gameObjectToDrag.name == "Ball3")
          {
              this.value = 3;
          }
      }
  
      // Update is called once per frame
      void Update () {
  
          if (Input.GetMouseButtonDown(0)) {
              Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
              if (Physics.Raycast(ray, out hit))
              {
                  this.gameObjectToDrag = hit.collider.gameObject;
                  GOcenter = this.gameObjectToDrag.transform.position;
                  touchPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
                  offset = touchPosition - GOcenter;
                  draggingMode = true;
              }
          }
  
          if (Input.GetMouseButton(0)) {
              if (draggingMode) {
                  touchPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
                  newGOcenter = touchPosition - offset;
  
                  if (this.gameObjectToDrag.name == "Ball1") {
                      this.gameObjectToDrag.transform.position = new Vector3(newGOcenter.x, 1, newGOcenter.z); // 0 means Y axis , so let the ball go horizontally only
                  }
                  else if (this.gameObjectToDrag.name == "Ball2")
                  {
                      this.gameObjectToDrag.transform.position = new Vector3(newGOcenter.x, 2, newGOcenter.z); // 0 means Y axis , so let the ball go horizontally only
                  }
                  else if (this.gameObjectToDrag.name == "Ball3")
                  {
                      this.gameObjectToDrag.transform.position = new Vector3(newGOcenter.x, 3, newGOcenter.z); // 0 means Y axis , so let the ball go horizontally only
                  }
  
              }
              txt.text = this.value + "";
          }
  
          if (Input.GetMouseButtonUp(0)) {
              draggingMode = false;
          }
      }
  }
  </code></pre>
  
  <p>I would like for each object I touch with mouse to show current value variable . Right now is showing 0 for all.</p>
  
  <p>Is it that I should create different script for each object and assign the script to each object seperately? that doesnt just sound correct way for me idk why, but there must be something!</p>