- Home /
Singleton class variables and inspector
I'm trying to create a singleton class to manage some variables, and I would like to have some of them show up in the inspector. So following threads about singleton I have setup 2x js scripts as follow :
// StartupScript.js
#pragma strict
private var control : MySingleton;
function Start()
{
control = MySingleton.Instance();
Debug.Log(control.GetScore());
control.SetScore(10);
Debug.Log(control.GetScore());
}
// MySingleton.js
#pragma strict
class MySingleton
{
private static var instance : MySingleton;
public static function Instance() : MySingleton
{
if (instance == null)
{
instance = new MySingleton();
}
return instance;
}
var score : int ;
private function MySingleton()
{
score=2;
}
function GetScore() : int
{
return score;
}
function SetScore(value : int) : void
{
score = value;
}
}
I've attached the StartupScript.js to an empty game object and didn't attach MySingleton.js to anything. Everything works but I'm not seeing the score variable in the inspector.
I've tried attaching MySingleton.js in the scene but unity gives an error that the script must derive from MonoBehaviour. I thought all JS derive from Monobehaviour.
If I update the MySingleton.js with "class MySingleton extends MonoBehaviour" I then get the following warning :
You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all
UnityEngine.MonoBehaviour:.ctor()
MySingleton:.ctor() (at Assets/js/MySingleton.js:20)
MySingleton:Instance() (at Assets/js/MySingleton.js:13)
StartupScript:Start() (at Assets/js/StartupScript.js:7)
I'm really confused, what am I doing wrong ? How do I make the singleton variable show up in the inspector ? Should I attach the singleton class and so how do I fix the warning ? Thanks