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);
}
}
}
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*.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;
}
}