public void Play(EMissionKey missionKey, int mapIndex, Action callback) { UnitsDialogScene missionScene = GetScene(missionKey, mapIndex); if (missionScene == null) { if (callback != null) { callback(); } return; } PlayInternal(missionScene, callback); }
private void PlayInternal(UnitsDialogScene missionScene, Action callback) { _missionScene = missionScene; _callback = callback; _sceneActionIndex = -1; _monologInstances = new Dictionary <string, UnitMonolog>(); for (int i = 0; i < _missionScene.DialogData.Length; i++) { if (!_monologInstances.ContainsKey(_missionScene.DialogData[i].PrefabPath)) { _monologInstances.Add(_missionScene.DialogData[i].PrefabPath, (GameObject.Instantiate(Resources.Load(_missionScene.DialogData[i].PrefabPath)) as GameObject).GetComponent <UnitMonolog>()); } } PlayNext(); }
private void End() { Action callback = _callback; _missionScene = null; _callback = null; _sceneActionIndex = -1; _activeMonologInstance = null; foreach (KeyValuePair <string, UnitMonolog> kvp in _monologInstances) { if (kvp.Value != null) { GameObject.Destroy(kvp.Value.gameObject); } } _monologInstances.Clear(); _monologInstances = null; callback(); }