Question by 
               coolant07 · Jul 23, 2017 at 01:29 PM · 
                scripting problemscript error  
              
 
              Hai guys i need help why my scripts not running "i will make button next3dobject and prev3dobject"
using System.Collections; using UnityEngine; using UnityEngine.UI;
public class Tombolnextprev : MonoBehaviour {
 public GameObject objek1,objek2,objek3;
 public GameObject[] objek3D = new GameObject[3];
 public int no = 1;
 public void Start(){
     objek3D [0] = objek1;
     objek3D [1] = objek2;
     objek3D [2] = objek3;
 }
 public void nextObject(){
     if (no < 3){
         no++;
     }
 }
 public void prevObject(){
     if (no > 1){    
         no--;
     }
 }
 public void PindahObjeck(){
     if (gameObject = "Object"){
         nextObject ();
     }
     if (gameObject = "Object"){
         prevObject ();
     }
 }
 public void Update(){
     if (no == 1) {
         objek1.SetActive(true);
         objek2.SetActive(false);
         objek3.SetActive(false);
     }
     if (no == 2) {
         objek1.SetActive(false);
         objek2.SetActive(true);
         objek3.SetActive(false);
     }
     if (no == 3) {
         objek1.SetActive(false);
         objek2.SetActive(false);
         objek3.SetActive(true);
     }
 }
}
               Comment
              
 
               
              Answer by UnityCoach · Jul 23, 2017 at 06:08 PM
Hi, you could use a property to swap objects instead of doing it in Update.
Here, some code with comments :
 public class ObjectListManager : MonoBehaviour
 {
     [SerializeField] List<GameObject> objectList; // use SerializeField attribute to display/save in the editor, while not accessible from other classes
 
     private int _current = 0;
     private int Current
     {
         get {return _current;}
         set
         {
             if (value != _current) // if value is different
             {
                 if (value >= 0 && value < objectList.Count); // if value is within List
                 {
                     objectList[_current].SetActive (false); // disable previous
                     _current = value;
                     objectList[_current].SetActive (true); // enable new
                 }
             }
         }
     }
 
     void Awake ()
     {
         // Disable all but first object
         for (int i = 1 ; i < objectList.Count ; i++)
             objectList[i].SetActive (false);
     }
     public void Next ()
     {
         // cycle when Current reaches objectList.Count-1
         Current = Current < (objectList.Count -1) ? Current+1 : 0;
     }
     public void Previous ()
     {
         // cycle when Current reaches 0
         Current = Current > 0 ? Current-1 : objectList.Count-1;
     }
 }
Your answer
 
 
             Follow this Question
Related Questions
Event not being invoked 2 Answers
Displaying Text on Touch Event 0 Answers
Problem with Score/Highscore script 0 Answers
error CS1525: Unexpected symbol Void 0 Answers
value must be greater than 0 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                