- Home /
Instance Variables Do Not Work On Android?
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.
Answer by sydan · Apr 16, 2014 at 03:02 PM
Solved
Apparently the issue is with Screen.orientation. You have to do this in awake and then setup variables in start otherwise the rectangles using Screen values will not be correct.
Issue resolved.
Your answer
Follow this Question
Related Questions
Will users be able to access public variables in any way on android? 1 Answer
Deploying to Android or iPhone device - track public variables in inspector? 1 Answer
Accessing variables from android java objects 1 Answer
What do I pass into Application.OpenURL to open up the Android market from an app? 2 Answers
Application.OpenURL on Unity 2017.2 and Android 7 not working 1 Answer