- Home /
Slider to control object rotation cause Object reference problem
I have a slider and a turret. I can move the turret with keyboard using a script that has commands like this
transform.Rotate(turret.forward)
Now I want to move the same object using a slider, so I have tried to attach this script to the turret
private var mySlider: UnityEngine.UI.Slider;
var myTurret : Transform;
function Start () {
mySlider=GameObject.FindGameObjectWithTag("MySliderTag") as UnityEngine.UI.Slider;
}
function Update () {
if(mySlider != null){
myTurret.transform.rotation.eulerAngles.z = mySlider.value;
}
}
Unfortunately doesn't work, the turet doesn't move and if I remove the null check non mySlyder I can see the error
*Object reference not set to an instance of an object.*
Answer by SMH17 · Jun 22, 2015 at 08:52 PM
mySlider is a GameObject you have to get the Component
as UI.Slide
.
Try this:
private var mySlider: UnityEngine.UI.Slider;
var myTurret : Transform;
function Start () {
var slider=GameObject.FindGameObjectWithTag("MySliderTag");
mySlider=slider.GetComponent(UnityEngine.UI.Slider) as UnityEngine.UI.Slider;
}
function Update () {
myTurret.transform.rotation.eulerAngles.z = mySlider.value;
}
Answer by brunopava · Jun 22, 2015 at 07:27 PM
You need to use "GetComponent", in doing so you won't need to cast. http://docs.unity3d.com/ScriptReference/GameObject.GetComponent.html
mySlider = GameObject.FindGameObjectWithTag("MySliderTag").GetComponent(UnityEngine.UI.Slider);
Your answer
Follow this Question
Related Questions
GUI.Box NullReferenceException 0 Answers
NGUI - how do I put a value on a UISlider in Javascript? 1 Answer
Access function in another script cause Object reference error 1 Answer
Setting Scroll View Width GUILayout 1 Answer
cant slide GUI slider 0 Answers