- Home /
Decrease life from another script
Hi all. I have a sciprt which contains player life as a variable. I have another scripts which restores the player to the starting position when the jump button is touched. I would like to put here something which would decrease life by 1 when the button is pushed. Here are the 2 scripts:
Lives.cs:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Lives : MonoBehaviour {
public Text lifeText;
public int lives;
// Use this for initialization
void Start () {
SetCountText();
}
// Update is called once per frame
void Update () {
}
public void LifeLost(int lifeMinus)
{
lives -= lifeMinus;
SetCountText ();
}
void SetCountText(){
lifeText.text = "Life: " + lives.ToString ();
}
}
Restore.cs:
using UnityEngine;
using System.Collections;
using UnityStandardAssets.CrossPlatformInput;
using UnityEngine.UI;
public class Restart : MonoBehaviour {
public GameObject player;
public GameObject startPos;
public Text gameOverText;
void Update () {
if (CrossPlatformInputManager.GetButton ("Jump")) {
player.transform.position=startPos.transform.position;
player.SetActive(true);
gameOverText.text="";
//HERE I SHOULD PUT SOMETHING THAT WOULD REDUCE LIFE BY 1 IN Lives.cs//
}
}
}
I would be really greatfull if someone could give me a solution.
Answer by Addyarb · Mar 31, 2015 at 08:21 PM
Use GetComponent
For instance, declare your script like this at the top of your script:
Lives livesScript;
then in the start function, put:
livesScript = GameObject.Find("Player").GetComponent<Lives>();
now you can access the variables of that player's lives script like this. (Be sure to make them public variables or it won't work!)
livesScript.lives -=1; //subtract 1 life
thanks Addyarb it is almost working correctly. the only problem is that when I push the button it removes like 3-4 lifes. If I keep my thumb on the button then it continusly decreasing my life. Is it possible to make it to decrease life with only 1 every time I push it?
Replace CrossPlatformInput$$anonymous$$anager.GetButton with CrossPlatformInput$$anonymous$$anager.GetButtonDown
Thank you both, now everything works like charm!! :)
Your answer
Follow this Question
Related Questions
UI button change variables in another script 1 Answer
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers