/// <summary> /// 重置 /// </summary> /// <param name="dataid"></param> public void ResetFunctionData(int dataid, Action <ChapterFunctionTextDefine> endAction) { _dialogueData = new SingleDialogueData(dataid, true); _boxBgRect.gameObject.SetActive(true); _roleSpeakRearTwoAction = endAction; Show(_dialogueData._FunctionData); }
/// <summary> /// 设置初始id 和主角id,聊天对象id /// </summary> /// <param name="starId">初始对话id</param> /// <param name="protagonistID">主角id</param> /// <param name="anotherId">聊天对象id</param> public void SetInitialData(int starId, int protagonistID, int anotherId) { _startDialogueId = starId; _protagonistID = protagonistID; _anotherId = anotherId; SetProtagonistName(); _dialogueData = new SingleDialogueData(_startDialogueId); _multiDialogueData = new MultiDialogueData(_startDialogueId); Show(); }
/// <summary> /// 初始化组件 /// </summary> public virtual void Initial(Action endAction, Action<ChapterDialogueTextDefine> roleSpeakAeforeAction = null, Action<ChapterDialogueTextDefine> roleSpeakRearAction = null, Action<ChapterDialogueTextDefine> roleDialogueBoxCloseAction = null, Action<ChapterDialogueTextDefine> roleBoxCloseAeforeAction = null) { _endAction = endAction; _roleSpeakAeforeAction = roleSpeakAeforeAction; _roleSpeakRearAction = roleSpeakRearAction; _roleDialogueBoxCloseAction = roleDialogueBoxCloseAction; _roleBoxCloseAeforeAction = roleBoxCloseAeforeAction; _dialogueData = new SingleDialogueData(_startDialogueId, _isFunction); _isInitial = true; }
/// <summary> /// 打印机完毕 /// </summary> public void ShowEnd() { _roleSpeakRearAction?.Invoke(_dialogueData._Data); if (_dialogueData._IsEnd) { _isEnd = true; } else { _dialogueData = new SingleDialogueData(_dialogueData._Data.NextDialogId); } _isPrinTing = false; }
/// <summary> /// 展示对话 /// </summary> /// <param name="data"></param> public override async UniTask Show(ChapterDialogueTextDefine data) { await base.Show(data); if (_roleDic.ContainsKey(data.NameID)) { _roleBoxCloseAeforeAction?.Invoke(_dialogueData._Data); if (_previousRole != null) { Debug.Log("关闭旧对话框:" + _previousRole.ID); await CloseShowText(_previousRole.NameID); } //if (_previousRole != null) //{ // Debug.Log("关闭旧对话框完毕:" + _previousRole.ID); //} await CloseAllShowText(data.NameID); //Debug.Log("关闭旧对话"); await UniTask.WaitUntil(() => IsAllClose(data.NameID)); //Debug.Log("关闭旧对话完毕"); _roleSpeakAeforeAction?.Invoke(data); await UniTask.WaitUntil(() => !_roleSpeakAeforeAwait); await _roleDic[data.NameID].Show(data.ID); _roleSpeakRearAction?.Invoke(_dialogueData._Data); //await UniTask.Delay(TimeSpan.FromMilliseconds(800)); //取消说话间隔 if (_dialogueData._Data.NextDialogId == 0) { _isEnd = true; } else { _previousRole = _dialogueData._Data; _dialogueData = new SingleDialogueData(_dialogueData._Data.NextDialogId); } if (_isMomentCloseOrOpen) { return; } OpenClickBtn(true); } }
/// <summary> /// 重置 /// </summary> /// <param name="dataid"></param> public void ResetData(int dataid) { _dialogueData = new SingleDialogueData(dataid); _boxBgRect.gameObject.SetActive(true); Show(_dialogueData._Data); }