using UnityEngine; public class FPSDemoGUI : MonoBehaviour { public GameObject[] Prefabs; public Transform muzzleFlashPoint; public GameObject Gun; public float reactivateTime = 4; public Light Sun; private int currentNomber; private GameObject currentInstance; private GUIStyle guiStyleHeader = new GUIStyle(); private float sunIntensity; float dpiScale; // Use this for initialization void Start() { if (Screen.dpi < 1) dpiScale = 1; if (Screen.dpi < 200) dpiScale = 1; else dpiScale = Screen.dpi / 200f; guiStyleHeader.fontSize = (int)(15f * dpiScale); guiStyleHeader.normal.textColor = new Color(0.15f, 0.15f, 0.15f); currentInstance = Instantiate(Prefabs[currentNomber], transform.position, transform.rotation) as GameObject; var reactivator = currentInstance.AddComponent(); reactivator.TimeDelayToReactivate = reactivateTime; sunIntensity = Sun.intensity; } private void OnGUI() { if (GUI.Button(new Rect(10 * dpiScale, 15 * dpiScale, 135 * dpiScale, 37 * dpiScale), "PREVIOUS EFFECT")) { ChangeCurrent(-1); } if (GUI.Button(new Rect(160 * dpiScale, 15 * dpiScale, 135 * dpiScale, 37 * dpiScale), "NEXT EFFECT")) { ChangeCurrent(+1); } sunIntensity = GUI.HorizontalSlider(new Rect(10 * dpiScale, 70 * dpiScale, 285 * dpiScale, 15 * dpiScale), sunIntensity, 0, 0.6f); Sun.intensity = sunIntensity; GUI.Label(new Rect(300 * dpiScale, 70 * dpiScale, 30 * dpiScale, 30 * dpiScale), "SUN INTENSITY", guiStyleHeader); GUI.Label(new Rect(400 * dpiScale, 15 * dpiScale, 100 * dpiScale, 20 * dpiScale), "Prefab name is \"" + Prefabs[currentNomber].name + "\" \r\nHold any mouse button that would move the camera", guiStyleHeader); } // Update is called once per frame void ChangeCurrent(int delta) { currentNomber += delta; if (currentNomber > Prefabs.Length - 1) currentNomber = 0; else if (currentNomber < 0) currentNomber = Prefabs.Length - 1; if (currentInstance != null) Destroy(currentInstance); if (currentNomber < 10) { currentInstance = Instantiate(Prefabs[currentNomber], transform.position, transform.rotation) as GameObject; Gun.SetActive(false); } else { currentInstance = Instantiate(Prefabs[currentNomber], muzzleFlashPoint.position, muzzleFlashPoint.rotation) as GameObject; Gun.SetActive(true); } var reactivator = currentInstance.AddComponent(); reactivator.TimeDelayToReactivate = reactivateTime; } }