- Home /
Help, How can I get variables?
I made a JS script with some static and private variables, and I called it "GameControl" :
//JS "GameControl" script
static var currentXP : int = 0;
static var maxXP : int = 10;
static var currentLevel : int = 1;
static var currentHealth : float = 45;
static var maxHealth : int = 45;
static var currentEnergy : float = 27;
static var maxEnergy : int = 27;
static var currentStrengh : int = 15;
private var maxStrengh : int = 650;
static var currentAttack : int = 11;
private var maxAttack : int = 670;
static var currentDefense : int = 20;
private var maxDefense : int = 760;
private var currentStamina : float = 25;
static var maxStamina : int = 25;
static var currentCritical : int = 5;
private var maxCritical : int = 100;
static var currentSpeed : int = 12;
private var maxSpeed : int = 690;
static var currentHP : float = 15;
static var maxHP : int = 15;
//...
Then, I made a save data script. But this is a C# script called "SaveAndLoad" :
using System.Collections;
using System;
public class DataManager
{
GameControl dataVariables;
public float healthData;
public int maxHealthData;
public int experienceData;
public int maxExperienceData;
public int levelData;
public float energyData;
public float maxEnergyData;
public int attackData;
public int strenghData;
public int defenseData;
public int maxStaminaData;
public int criticalData;
public int speedData;
public int HPData;
public int maxHPData;
void Start ()
{
dataVariables = GameObject.Find("Player").GetComponent<GameControl>();
}
void Update ()
{
healthData = dataVariables.currentHealth;
maxHealthData = dataVariables.maxHealth;
experienceData = dataVariables.currentXP;
maxExperienceData = dataVariables.maxXP;
levelData = dataVariables.currentLevel;
energyData = dataVariables.currentEnergy;
maxEnergyData = dataVariables.maxEnergy;
attackData = dataVariables.currentAttack;
strenghData = dataVariables.currentStrengh;
defenseData = dataVariables.currentDefense;
maxStaminaData = dataVariables.maxStamina;
criticalData = dataVariables.currentCritical;
speedData = dataVariables.currentSpeed;
HPData = dataVariables.currentHP;
maxHPData = dataVariables.maxHP;
}
}
//...
But the debug log says: DataManager.cs(7,9): error CS0246: The type or namespace name `GameControl' could not be found. Are you missing a using directive or an assembly reference?
How can I access those variables? or What I'm wrong?
Answer by robertbu · Aug 18, 2014 at 06:10 AM
You need to put your 'GameControl' script in an earlier phase so that it gets compiled before the C# script. Typically folks drop files that want to compile earlier in Assets/Standard Assets. Here is a reference page that list the order of compiles:
http://docs.unity3d.com/Manual/ScriptCompileOrderFolders.html