- Home /
Can't call a function from another script
Hi all I have a problem that I can't solve. I have 2 js scripts, the fist one (destroy.js) that destroys gameobjects and the second one that adds 100 poits for object destroyed (Score.js).
I want to call the function addscore() in Score.js when destroy.js kills a object.
destroy.js
#pragma strict
function Start () {
}
public var score : Score;
function Update () {
if(transform.position.y<-10)
{this.Destroy (gameObject);
score = gameObject.GetComponent(Score);
score.GetComponent(Score).addscore();
}
}
Score.js
#pragma strict
public var score :int ;
public var killed : int;
function Start () {
score=0;
}
var destory : GameObject;
function Update () {
}
function addscore()
{
score=score+100;
killed= killed + 1;
Debug.Log("Killed: "+killed+" Score: "+score);
}
function OnGUI()
{
GUI.Label(new Rect(Screen.width-200,Screen.height-20, 100, 20), "Punti: "+score);
}
Answer by robertbu · Jul 27, 2014 at 02:51 PM
There are two problems here. First on line 12, you call Destory() before you add to the score. After calling Destory(), nothing else in this script (or any script on this game object) will be executed. And that brings me to the next problem. You are using 'gameObject.GetComponent(Score)' which will attempt to get the Score component from this game object...the one that is being destroyed. I imagine the score script is on another game object, so you would do something like:
GameObject.Find("Score").GetComponent(Score).addScore();
...where "Score" is the name of the game object that has the Score component.
And you need to move the Destroy down a couple of lines.
Your answer
Follow this Question
Related Questions
The name 'Joystick' does not denote a valid type ('not found') 2 Answers
this is part of my health script it gives me a error unknown identifier GameScore pls help thxxx 0 Answers
Converting Autowaypoint (JS) to C# 1 Answer
Fix animation to AI through script 1 Answer
Trying to use a basic combat system 2 Answers