private void triggerKeyEvent(KeyCode currentKey, bool isKeyUp) { if (btnLiseners == null || btnLiseners.Count == 0) { List <GameObject> allObject = GetAllObjectsInScene(); btnLiseners = new List <INvrButtonListener>(); foreach (GameObject obj in allObject) { Component[] comps = obj.GetComponents(typeof(INvrButtonListener)); if (comps != null) { INvrButtonListener[] listeners = new INvrButtonListener[comps.Length]; for (int p = 0; p < comps.Length; p++) { listeners[p] = (INvrButtonListener)comps[p]; } // 获取所有挂载了INvrButtonListener的物体 notifyBtnPressed(listeners, currentKey, isKeyUp); foreach (Component cp in comps) { btnLiseners.Add((INvrButtonListener)cp); } } } } else { notifyBtnPressed(btnLiseners.ToArray(), currentKey, isKeyUp); } }
private void notifyBtnPressed(INvrButtonListener[] comps, KeyCode currentKey, bool isKeyUp) { if (comps == null) { return; } for (int i = 0; i < comps.Length; i++) { INvrButtonListener btnListener = (INvrButtonListener)comps[i]; if (btnListener == null) { continue; } if (currentKey == KeyCode.LeftArrow) { btnListener.OnPressLeft(); } else if (currentKey == KeyCode.RightArrow) { btnListener.OnPressRight(); } else if (currentKey == KeyCode.UpArrow) { btnListener.OnPressUp(); } else if (currentKey == KeyCode.DownArrow) { btnListener.OnPressDown(); } else if (currentKey == KeyCode.Escape) { btnListener.OnPressBack(); } else if (currentKey == KeyCode.JoystickButton0 || (int)currentKey == 10) { btnListener.OnPressEnter(isKeyUp); } else if (currentKey == KeyCode.Joystick5Button18) { // 音量加 btnListener.OnPressVolumnUp(); } else if (currentKey == KeyCode.Joystick5Button19) { // 音量减 btnListener.OnPressVolumnDown(); } } }