// Use this for initialization void Start () { m_KeysLayer = new GameObject(); m_KeysLayer.transform.SetParent(GameManager.Instance.FullTimeline.transform); m_KeysLayer.transform.localPosition = new Vector2(GameManager.Instance.FullTimeline.rect.x, 0f); m_KeysLayer.SetActive(false); m_CurrentKey = null; m_AudioSource = GetComponent<AudioSource>(); m_AudioSource.clip = m_KeyList.AudioClip; m_AudioSource.loop = true; m_GameplayEnabled = EnabledAtStart; if(m_GameplayEnabled) m_AudioSource.Play(); //m_ParticleSystem = GetComponentInChildren<ParticleSystem>(); m_Light = GetComponentInChildren<Light>(); if (m_Light) m_LightStartIntensity = m_Light.intensity; m_AudioSourceStartingPitch = m_AudioSource.pitch; // m_Slider = GameManager.Instance.HUD.GetComponentInChildren<Slider>(); GameManager.Instance.HUD.SetActive(false); foreach(KeyList.Key key in m_KeyList.Keys) { SetSliderTime(key.TimeInMillisec); // print(m_DebugSlider.handleRect.position); var marker = GameObject.Instantiate(GameManager.Instance.SliderTimerMarkerGAO); var textComp = marker.GetComponentInChildren<Text>(); if (textComp) { var keyString = key.KeyCode.ToString(); // Remove "Alpha" string removeString = "Alpha"; int index = keyString.IndexOf(removeString); keyString = (index < 0) ? keyString : keyString.Remove(index, removeString.Length); textComp.text = keyString; } marker.transform.SetParent(m_KeysLayer.transform); float relativeTime = key.TimeInMillisec / GameManager.Instance.TimeLineMillisec; relativeTime *= GameManager.Instance.FullTimeline.rect.width; marker.transform.localPosition = new Vector2(relativeTime, 0f); key.SliderMarkerImage = marker.GetComponent<Image>(); } m_TimeLineWidth = GameManager.Instance.FullTimeline.rect.width; }
IEnumerator Gameplay() { m_HasFailedInThisRun = false; int keyId = 0; while(keyId < m_KeyList.Keys.Length) { var key = m_KeyList.Keys[keyId]; float keyTime = key.TimeInMillisec; if (keyTime < GetAudioClipLengthMS()) { yield return StartCoroutine(WaitForNextTime(key.TimeInMillisec - m_TimeAllowance / 2)); m_CurrentKey = key; yield return StartCoroutine(WaitForNextTime(key.TimeInMillisec + m_TimeAllowance / 2)); CheckIfFailed(); m_CurrentKey = null; } keyId++; } yield return null; }