- Home /
Question by
Vuja998 · Mar 15, 2015 at 07:35 PM ·
javascripteditorserializationcustom-inspector
Custom Inspector data serialization in JavaScript
I've been making a custom inspector for a couple of days now, and I'm using JavaScript for the player scripts as well as editor scripts, but I can't figure out how to stop the booleans from reseting once I play my game. I know that I need to serialize the varibles so their value gets saved, but I can't make it work...
Here is the smallest example of one of these scripts
ClickShoot.js :
var projectile : Transform;
var spawnPoint : Transform;
var coolDownTime : float = 0.5f;
var shootForce : int = 1000;
private var canShoot : boolean = false;
private var timer : float = 0;
function Update () {
if(projectile != null){
timer += Time.deltaTime;
if(timer > coolDownTime){
canShoot = true;
}
else{
canShoot = false;
}
if(Input.GetMouseButtonUp(0) && canShoot){
var bullet = Instantiate(projectile, spawnPoint.position, transform.rotation);
bullet.GetComponent.<Rigidbody>().AddForce(transform.forward * shootForce);
timer = 0;
}
}
else {
Debug.LogError("No object was assigned to the 'projectile' variable in the inspector. That is mandatory. Script will not execute further");
}
}
ClickShootEditor.js :
#pragma strict
@SerializeField
var upas : boolean;
@SerializeField
var cooldown : boolean;
@SerializeField
var addForce : boolean;
@CustomEditor(ClickShoot)
class ClickShootEditor extends Editor {
function OnInspectorGUI(){
var cs : ClickShoot = target;
cs.projectile = EditorGUILayout.ObjectField("Projectile", cs.projectile, typeof(Transform));
upas = EditorGUILayout.Toggle("Use player as spawn", upas);
cooldown = EditorGUILayout.Toggle("Cooldown", cooldown);
addForce = EditorGUILayout.Toggle("Add Force", addForce);
if(!upas){
cs.spawnPoint = EditorGUILayout.ObjectField("Spawn Point", cs.spawnPoint, typeof(Transform));
}
else{
cs.spawnPoint = null;
}
if(cooldown){
cs.coolDownTime = EditorGUILayout.FloatField("Cooldown Time", cs.coolDownTime);
}
else{
cs.coolDownTime = 0;
}
if(addForce){
cs.shootForce = EditorGUILayout.IntField("ShootForce", cs.shootForce);
}
else{
cs.shootForce = 0;
}
}
}
Thanks in advance... Any help is appreciated
Comment