- Home /
NULL REFERENCE EXCEPTION ON SWITCHING PLATFORM TO ANDROID
HERE IS THE ERROR:
NullReferenceException UnityStandardAssets.CrossPlatformInput.MobileControlRig.EnableControlRig (System.Boolean enabled) (at Assets/Standard Assets/CrossPlatformInput/Scripts/MobileControlRig.cs:89) UnityStandardAssets.CrossPlatformInput.MobileControlRig.CheckEnableControlRig () (at Assets/Standard Assets/CrossPlatformInput/Scripts/MobileControlRig.cs:82) UnityStandardAssets.CrossPlatformInput.MobileControlRig.OnActiveBuildTargetChanged (UnityEditor.BuildTarget previousTarget, UnityEditor.BuildTarget newTarget) (at Assets/Standard Assets/CrossPlatformInput/Scripts/MobileControlRig.cs:98) UnityEditor.Build.BuildPipelineInterfaces.OnActiveBuildTargetChanged (UnityEditor.BuildTarget previousPlatform, UnityEditor.BuildTarget newPlatform) (at :0) UnityEditor.Build.BuildPipelineInterfaces:OnActiveBuildTargetChanged(BuildTarget, BuildTarget)
HERE IS THE CODE: using System; #if UNITY_EDITOR using UnityEditor; #endif using UnityEngine;
namespace UnityStandard_Assets.CrossPlatformInput { [ExecuteInEditMode] public class MobileControlRig : MonoBehaviour #if UNITY_EDITOR , UnityEditor.Build.IActiveBuildTargetChanged #endif { // this script enables or disables the child objects of a control rig // depending on whether the USE_MOBILE_INPUT define is declared.
// This define is set or unset by a menu item that is included with
// the Cross Platform Input package.
if !UNITY_EDITOR
void OnEnable() { CheckEnableControlRig(); } #else public int callbackOrder { get { return 1; } } #endif
private void Start()
{
if UNITY_EDITOR
if (Application.isPlaying) //if in the editor, need to check if we are playing, as start is also called just after exiting play
endif
{
UnityEngine.EventSystems.EventSystem system = GameObject.FindObjectOfType<UnityEngine.EventSystems.EventSystem>();
if (system == null)
{//the scene have no event system, spawn one
GameObject o = new GameObject("EventSystem");
o.AddComponent<UnityEngine.EventSystems.EventSystem>();
o.AddComponent<UnityEngine.EventSystems.StandaloneInputModule>();
}
}
}
if UNITY_EDITOR
private void OnEnable()
{
EditorApplication.update += Update;
}
private void OnDisable()
{
EditorApplication.update -= Update;
}
private void Update()
{
CheckEnableControlRig();
}
endif
private void CheckEnableControlRig()
{
if MOBILE_INPUT
EnableControlRig(true);
else
EnableControlRig(false);
endif
}
private void EnableControlRig(bool enabled)
{
foreach (Transform t in transform)
{
t.gameObject.SetActive(enabled);
}
}
if UNITY_EDITOR
public void OnActiveBuildTargetChanged(BuildTarget previousTarget, BuildTarget newTarget)
{
CheckEnableControlRig();
}
endif
} }
Your answer
