- Home /
This post has been wikified, any user with enough reputation can edit it.
Public Variables not displaying in the inspector
I have some variables in a public class that I want to access in the inpsector. I'm using c# and found out that I have to put in System.Serializable for it to show in the inspector, however it's still not showing. Any thoughts?
using UnityEngine;
using System.Collections;
public class CharacterController_2D : MonoBehaviour {
public float f_speed = 5.0f;
public SpriteManager[] loopSprites;
private int in_Direction;
// Use this for initialization
void Start () {
in_Direction = 1;
for(int i = 0; i < loopSprites.Length; i++)
{
loopSprites[i].init();
}
Camera.main.transform.position = new Vector3(transform.position.x, transform.position.y, Camera.main.transform.position.z);
}
// Update is called once per frame
void Update () {
if(Input.GetButton("Horizontal"))
{
in_Direction = Input.GetAxis("Horizontal") < 0 ? -1 : 1;
rigidbody.velocity = new Vector3((in_Direction * f_speed),rigidbody.velocity.y,0);
loopSprites[0].resetFrame();
loopSprites[1].UpdateAnimation(in_Direction,renderer.material);
}
else{
loopSprites[1].resetFrame();
loopSprites[0].UpdateAnimation(in_Direction,renderer.material);
}
}
public void LateUpdate()
{
Camera.main.transform.position = new Vector3(transform.position.x, transform.position.y, Camera.main.transform.position.z);
}
}
[System.Serializable]
public class SpriteManager : MonoBehaviour{
public Texture2D spriteTexture;
public int in_framePerSec;
public int in_gridX;
public int in_gridY;
public float f_timePercent;
private float f_nextTime;
private float f_gridX;
private float f_gridY;
private int in_CurFrame;
public void init(){
f_timePercent = 1.0f / in_framePerSec;
f_nextTime = f_timePercent;
f_gridX = 1.0f/ in_gridX;
f_gridY = 1.0f / in_gridY;
in_CurFrame = 1;
}
public void UpdateAnimation(int _direction, Material _material){
_material.mainTexture = spriteTexture;
if(Time.time > f_nextTime)
{
f_nextTime = Time.time + f_timePercent;
in_CurFrame++;
if(in_CurFrame > in_framePerSec)
{
in_CurFrame = 1;
}
}
_material.mainTextureScale = new Vector2(_direction * f_gridX, f_gridY);
int in_col = 0;
if(in_gridY > 1)
{
in_col = (int)Mathf.Ceil (in_CurFrame / in_gridX);
}
if(_direction == 1)
{
_material.mainTextureOffset = new Vector2(((in_CurFrame) % in_gridX) * f_gridX, in_col * f_gridY);
}
else
{
_material.mainTextureOffset = new Vector2(((in_gridX + (in_CurFrame) % in_gridX)) * f_gridX, in_col * f_gridY);
}
}
public void resetFrame(){
in_CurFrame = 1;
}
}
Comment
This is a duplicate of http://answers.unity3d.com/questions/305923/public-class-variables-not-displaying-in-the-inspe.html.
Don't post the same question more than once. Wait for the moderation until you get 15 karma as stated in the FAQ.