I am working on a small Unity Android project.
I have this C# monobehaviour class:
using UnityEngine;
using System.Collections;
public class AndroidDirector : MonoBehaviour
{
public Rect leftTouchRect = new Rect(0, 0, 0, 0);
public Rect rightTouchRect = new Rect(0, 0, 0, 0);
// Use this for initialization
void Start ()
{
Screen.orientation = ScreenOrientation.Landscape;
this.leftTouchRect = new Rect(100, Screen.height - 250, 150, 150);
this.rightTouchRect = new Rect(Screen.width - 250, Screen.height - 250, 150, 150);
}
void OnGUI()
{
GUI.Box(this.leftTouchRect, "<");
GUI.Box(this.rightTouchRect, ">");
}
}
When I setup the leftTouchRect and rightTouchRect variables inside the OnGUI method as local variables the boxes are shown. When I make the two variables instance variables of this class (as they are above) the boxes do not show. Why do instance variables not work on Android? In the Unity editor the boxes show up fine but on the Android device they don’t.
Am I missing something really obvious?
Extra:
I’ve tried making the variables public, private etc. I’ve tried printing them out and they definitely get set. I’ve tried using them in the Update method and they don’t do anything there either even though they are apparently set correctly.
Edit
I’ve done some testing and found that it’s not generally all instance variables. It seems only Rect objects fail during runtime if they are instance variables. I set up a Vector3 variable on the same object and could use it fine.