- Home /
 
               Question by 
               Sansgamer120 · Dec 20, 2020 at 11:32 PM · 
                floatvariable-definition  
              
 
              how to make public float refer to another script
I have an issue in that I want "public SC_DamageReciever Player" to be a public transform. but later in the script it refers to playerHP and weaponManager that is in the script refrenced. here is the first script that does the refrencing
 using UnityEngine;
 using UnityEngine.SceneManagement;
 
 public class SC_EnemySpawner : MonoBehaviour
 {
     public GameObject enemyPrefab;
     public SC_DamageReceiver Player;
     
 
     public Texture crosshairTexture;
     public float spawnInterval = 2; //Spawn new enemy each n seconds
     public int enemiesPerWave = 5; //How many enemies per wave
     public Transform[] spawnPoints;
 
     float nextSpawnTime = 0;
     int waveNumber = 1;
     bool waitingForWave = true;
     float newWaveTimer = 0;
     int enemiesToEliminate;
     //How many enemies we already eliminated in the current wave
     int enemiesEliminated = 0;
     int totalEnemiesSpawned = 0;
 
 
     
 
 
 
     // Start is called before the first frame update
     void Start()
     {
        
 
         //Wait 10 seconds for new wave to start
         newWaveTimer = 2;
         waitingForWave = true;
     }
 
     // Update is called once per frame
     void Update()
     {
         if (waitingForWave)
         {
             if (newWaveTimer >= 0)
             {
                 newWaveTimer -= Time.deltaTime;
             }
             else
             {
                 //Initialize new wave
                 enemiesToEliminate = waveNumber * enemiesPerWave;
                 enemiesEliminated = 0;
                 totalEnemiesSpawned = 0;
                 waitingForWave = false;
             }
         }
         else
         {
             if (Time.time > nextSpawnTime)
             {
                 nextSpawnTime = Time.time + spawnInterval;
 
                 //Spawn enemy 
                 if (totalEnemiesSpawned < enemiesToEliminate)
                 {
                     Transform randomPoint = spawnPoints[Random.Range(0, spawnPoints.Length - 1)];
 
                     GameObject enemy = Instantiate(enemyPrefab, randomPoint.position, Quaternion.identity);
                     SC_NPCEnemy npc = enemy.GetComponent<SC_NPCEnemy>();
                     npc.playerTransform = Player.transform;
                     npc.es = this;
                     totalEnemiesSpawned++;
                 }
             }
         }
 
         if (Player.playerHP <= 0)
         {
             if (Input.GetKeyDown(KeyCode.U))
             {
                 Scene scene = SceneManager.GetActiveScene();
                 SceneManager.LoadScene(scene.name);
             }
         }
     }
 
     void OnGUI()
     {
         GUI.Box(new Rect(10, Screen.height - 35, 100, 25), ((int)Player.playerHP).ToString() + " HP");
 
 
         if (Player.playerHP <= 0)
         {
             GUI.Box(new Rect(Screen.width / 2 - 75, Screen.height / 2 - 20, 150, 40), "Game Over\nPress 'U' to Restart");
         }
         else
         {
             GUI.DrawTexture(new Rect(Screen.width / 2 - 3, Screen.height / 2 - 3, 6, 6), crosshairTexture);
         }
 
         GUI.Box(new Rect(Screen.width / 2 - 50, 10, 100, 25), (enemiesToEliminate - enemiesEliminated).ToString());
 
         if (waitingForWave)
         {
             GUI.Box(new Rect(Screen.width / 2 - 125, Screen.height / 4 - 12, 250, 25), "Waiting for Wave " + waveNumber.ToString() + ". " + ((int)newWaveTimer).ToString() + " seconds left...");
         }
     }
 
     private void NewMethod()
     {
         GUI.Box(new Rect(Screen.width / 2 - 35, Screen.height - 35, 70, 25), Player.weaponManager.selectedWeapon.bulletsPerMagazine.ToString());
     }
 
     public void EnemyEliminated(SC_NPCEnemy enemy)
     {
         enemiesEliminated++;
 
         if (enemiesToEliminate - enemiesEliminated <= 0)
         {
             //Start next wave
             newWaveTimer = 2;
             waitingForWave = true;
             waveNumber++;
         }
     }
 }
and here is SC_DamageReciever.
 using System;
 using UnityEngine;
 
 public class SC_DamageReceiver : MonoBehaviour, IEntity
 {
     //This script will keep track of player HP
     public float playerHP = 100;
     public SC_CharacterController playerController;
     public SC_WeaponManager weaponManager;
 
     public void ApplyDamage(float points)
     {
         playerHP -= points;
 
         if (playerHP <= 0)
         {
             //Player is dead
             playerController.canMove = false;
             playerHP = 0;
         }
     }
 
     internal static SC_DamageReceiver[] FindWithTag(string v)
     {
         throw new NotImplementedException();
     }
 }
 
 
 Thanks :)
               Comment
              
 
               
              Do you want to take a variable that is in another script is this?
you cant "refer" 2 floats, just create one and modify that one
Your answer
 
 
             Follow this Question
Related Questions
Float randomly being set to 0 spontaneously 1 Answer
Unity3d fails when uses float value. 1 Answer
I dont want Decimals :P 1 Answer
Shooting. Bullet floats and sprays 1 Answer
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                