ParticleMenu.cs 2.14 KB
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class ParticleMenu : MonoBehaviour {

	// our ParticleExamples class being turned into an array of things that can be referenced
	public ParticleExamples[] particleSystems;

	// the gun GameObject
	public GameObject gunGameObject;

	// a private integer to store the current position in the array
	private int currentIndex;

	// the currently shown prefab game object
	private GameObject currentGO;

	// where to spawn prefabs 
	public Transform spawnLocation;

	// references to the UI Text components
	public Text title;
	public Text description;
	public Text navigationDetails;

	// setting up the first menu item and resetting the currentIndex to ensure it's at zero
	void Start()
	{
		Navigate (0);
		currentIndex = 0;
	}


	// our public function that gets called by our menu's buttons
	public void Navigate(int i){

		// set the current position in the array to the next or previous position depending on whether i is -1 or 1, defined in our button event
		currentIndex = (particleSystems.Length + currentIndex + i) % particleSystems.Length;

		// check if there is a currentGO, if there is (if its not null), then destroy it to make space for the new one..
		if(currentGO != null)
			Destroy (currentGO);

		// ..spawn the relevant game object based on the array of potential game objects, according to the current index (position in the array)
		currentGO = Instantiate (particleSystems[currentIndex].particleSystemGO, spawnLocation.position + particleSystems[currentIndex].particlePosition, Quaternion.Euler(particleSystems[currentIndex].particleRotation)) as GameObject;

		// only activate the gun GameObject if the current effect is a weapon effect
		gunGameObject.SetActive (particleSystems[currentIndex].isWeaponEffect);

		// setup the UI texts according to the strings in the array 
		title.text = particleSystems [currentIndex].title;
		description.text = particleSystems [currentIndex].description;
		navigationDetails.text = "" + (currentIndex+1) + " out of " + particleSystems.Length.ToString();

	}
}