- Home /
OnEnable is never called for my script
I have two script on same object for one OnEnable is called but for other. I have tried this on primitive Cube with same result. For OnOverReaction onEnable is not called.
using UnityEngine;
using VRStandardAssets.Utils;
namespace VRStandardAssets.Examples
{
// This script shows a simple example of how
// swipe controls can be handled.
public class OnOverReaction : MonoBehaviour
{
[SerializeField] private VRInteractiveItem m_Item;
private void OnEnable()
{
m_Item.OnOver += HandleSwipe;
}
private void OnDisable()
{
m_Item.OnOver -= HandleSwipe;
}
private void HandleSwipe()
{
}
}
}
For UITint onEnable is called
using UnityEngine;
using UnityEngine.UI;
namespace VRStandardAssets.Utils
{
public class UITint : MonoBehaviour
{
[SerializeField] private Color m_Tint; // The colour to tint the Images.
[Range (0f, 1f)] [SerializeField] private float m_TintPercent = 0.5f; // How much the colour should be used.
[SerializeField] private Image[] m_ImagesToTint; // References to the images which will be tinted.
[SerializeField] private VRInteractiveItem m_InteractiveItem; // Reference to the VRInteractiveItem which must be looked at to tint the images.
private void OnEnable ()
{
m_InteractiveItem.OnOver += HandleOver;
m_InteractiveItem.OnOut += HandleOut;
}
private void OnDisable ()
{
m_InteractiveItem.OnOver -= HandleOver;
m_InteractiveItem.OnOut -= HandleOut;
}
private void HandleOver ()
{
// When the user looks at the VRInteractiveItem go through all the images...
for (int i = 0; i < m_ImagesToTint.Length; i++)
{
// and ADD to their colour by an amount based on the tint percentage. Note this will push the colour closer to white.
m_ImagesToTint[i].color += m_Tint * m_TintPercent;
}
}
private void HandleOut ()
{
// When the user looks away from the VRInteractiveItem go through all the images...
for (int i = 0; i < m_ImagesToTint.Length; i++)
{
// ...and subtract the same amount.
m_ImagesToTint[i].color -= m_Tint * m_TintPercent;
}
}
}
}
What am I doing wrong here?
Answer by alexpizzini · Oct 27, 2016 at 08:12 PM
If you're not getting null reference exceptions on that one line in OnEnable, I don't see anything wrong here so far.
First, I'd verify with something really simple like a single Debug.Log at the top of the OnEnable method. Second, Make sure that the component itself is enabled and the game object is active and not deactivated.
Answer by Rajawat · Oct 28, 2016 at 05:27 PM
The script's onEnable started getting called without any changes. So to be double sure I created a new script and tried the same thing in that but again onEnable is not called in the new script. Is there any settings or way to create script or to write the logic or doing clean build. I am not getting what am I missing here in such simple scripts with all the gameobjects and scripts active and enabled.
Your answer
Follow this Question
Related Questions
Cant run script second time 1 Answer
How can callback from shared object 0 Answers
Saving & Loading Custom File For Android Build 0 Answers
Unity Editor Freezes- Help! Urgent! 1 Answer
Player Prefs Dosen't work on android 0 Answers