- Home /
BCE 0005 unknown identifier error when accessing global variable.
I have a problem here, i am trying to make a life display with 3 images. when the character touches a trap it has a life deducted. i have declared the LIVES to be global but when i try to access it using my fpswalker it come with error bce0005 unknown identifier
var health1: Texture2D;// 1 life left
var health2: Texture2D;//2 life left
var health3: Texture2D; //full health
static var LIVES =3; // Global variable(static) - accessible by any script
function Update () {
print("Lives: "+ LIVES + "Hits: "+HITS);
switch(LIVES){
case 3:
guiTexture.texture = health3;
break;
case 2:
guiTexture.texture = health2;
break;
case 1:
guiTexture.texture = health1;
break;
case 0:
//gameover script
break;
}
}
Below is my fpswalker script.
var speed = 6.0;
var jumpSpeed = 8.0;
var gravity = 20.0;
private var moveDirection = Vector3.zero;
private var grounded : boolean = false;
function OnTriggerEnter(hit: Collider){ //hit is a controllercolliderhit type
if(hit.gameObject.tag == "TrapPoison"){
HealthCtrl1.LIVES -=1;
// this is the part getting error when trying to run
}
}
function FixedUpdate() {
if (grounded) {
// We are grounded, so recalculate movedirection directly from axes
moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
moveDirection = transform.TransformDirection(moveDirection);
moveDirection *= speed;
if (Input.GetButton ("Jump")) {
moveDirection.y = jumpSpeed;
}
}
// Apply gravity
moveDirection.y -= gravity * Time.deltaTime;
// Move the controller
var controller : CharacterController = GetComponent(CharacterController);
var flags = controller.Move(moveDirection * Time.deltaTime);
grounded = (flags & CollisionFlags.CollidedBelow) != 0;
}
Answer by Bunny83 · May 24, 2011 at 12:50 PM
Àre you sure that your class is called HealthCtrl1? What's the exact error? It normally prints the unknown identifier's name.
Oh and btw. static != global. static means the variable belong to the class instead of a class instance.
edit
If you would read the error it says: "BCE0005: Unknown identifier: 'HITS'."
Why don't you read the error completely or post at least the whole error. It says clearly that the unknown identifier is HITS!
Answer by tnecniv · May 24, 2011 at 04:27 PM
,my javascript is created and named as HealthCtrl1. is this the class name? by using static it means i can access with other script in the same project correct?
Don't post comments as answers. We have a comment-function below each answer or question. I've updated my answer. Next time read the error carefully before you just copy a part of it into a question here.
Answer by tnecniv · May 24, 2011 at 04:27 PM
my javascript is created and named as HealthCtrl1. is this the class name? by using static it means i can access with other script in the same project correct?
Answer by tnecniv · May 25, 2011 at 01:44 AM
This is the error message i got: Assets/Standard Assets/Scripts/FPSWalker 2.js(10,17): BCE0005: Unknown identifier: 'HealthCtrl1'.
Is it really so hard to press the comment button?
You obviously named your HealthCtrl1 script not HealthCtrl1.js. Watchout! in Unity you must not include the extention. In Unity your script is just called "HealthCtrl1". Unity doesn't show the extention ".js". If you named your script HealthCtrl1.js in Unity the read name would be HealthCtrl1.js.js and that's not a valid classname. Also the filename/classname is "case sensitive". Healthctrl1 is not the same as HealthCtrl1
Answer by tnecniv · May 25, 2011 at 03:35 PM
i have pressed on the comment button. the naming convention is correct.
Your answer
![](https://koobas.hobune.stream/wayback/20220612083949im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Global variables - static keyword ? UnityScript? javascript? 1 Answer
Add seconds to timer countdown. 3 Answers
PlayerPrefs are global? 3 Answers
Two player collision ? 1 Answer
Global Variables with Prefabs/ Self-Naming Variables 2 Answers