델리게이트를 이용해서 어떠한 조건을 만족했을때 자동으로 함수 호출되는 이벤트를 만들려고하는데요


대화가 바로끝나고 자동으로 화면전환되는 이벤트를 만들고 싶습니다.

대화만드는 기능과 화면전환하는 기능은 만들었는데 델리게이트를 이용해서 연결이 안되네요 ㅠㅠㅠ


형님들 매개변수를 통일하면 된다고 하는데 제가 두 함수 기능을 어떻게 매개변수 통일해서 연결하는 지 잘 모르겠습니다...

한번 예시좀 보여주실 수있나요? 부탁드립니다!!!









using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using System;

[System.Serializable]//외부스크립트에서 수정을 못하게,
// 참조할 필요없는 변수가 접근해서 쓸데없는 상황을 안만들기
//public 은 그냥 직렬화 되지만 private는 직렬화(serialization)해줘야된다.
public class Dialogue
{
[TextArea] //여러줄써줄수있게만들어줌
public string dialogue;
public Sprite cg;
}
public class DialogManager : MonoBehaviour
{
[SerializeField] private SpriteRenderer sprite_StandingCG; //private 변수지만 //변수선언 이유 CG변경
[SerializeField] private Image image_DialogueBox; //inspector 접근가능하다 //텍스트 박스
[SerializeField] private Text txt_Dialogue; //게임 오브젝트나 컴포넌트 관리할때 // 텍스트 내용
//인스펙터에서만 관리할려고

private bool isDialogue = false; //대화가 진행중이다 판별해줌

private int count = 0;
// 대화가 얼마나 진행되엇는지 알려주는 카운트
[SerializeField] private Dialogue[] dialogue; //Dialogue 클래스의 대화 배열받기


public void ShowDialogue() // 대화창 보여주는 유무 기능의 함수
{
// Start is called before the first frame update
OnOff(true);
count = 0; //대화 시작되는 부분 초기화
NextDialogue(); // 호출되자마자 대화시작
}
private void OnOff(bool _flag) //대화창 보이는거 안보이는거 조정하는 함수
{
image_DialogueBox.gameObject.SetActive(_flag); //flag는 바로 위 OnOff(true)함수 기능 중 true를 flag로 받음
sprite_StandingCG.gameObject.SetActive(_flag);
txt_Dialogue.gameObject.SetActive(_flag);
isDialogue = _flag;
}


private void NextDialogue() // 대화진행 함수 만들기
{
txt_Dialogue.text = dialogue[count].dialogue; //첫번째 대사
sprite_StandingCG.sprite = dialogue[count].cg; // 첫번째 CG 등장시 카운터시작
count++; //다음 장면으로 이어가게
}

// Update is called once per frame
void Update() { //매 프레임마다 반복되는 함수, 만약 매프레임마다 연산할 필요없을 경우 밖에다 기능만들어야됨
if (isDialogue) //예를 들면 반복적으로 대화를 통해 정보를 얻어야 되는 게임이라면 이곳에 기능을 만들어야됨...
{
if (Input.GetMouseButtonDown(0)) //마우스 왼쪽 버튼으로 입력받기! 대화 클릭으로 진행됨
{
if (count < dialogue.Length) // 대화의 배열의 크기가 카운트 되는 수(현재 대화)보다 작으면
NextDialogue(); // 다음 대화창으로 진행
else // 그렇지 않으면
OnOff(false);
//자동으로 종료
}
}
}

delegate void EventHandler(int count); // 여기부터 어떻게할까요??

IEnumerator TestCoroutine() // 조건문을 코루틴 안에 넣어보기 if~문 그리고 return null 이거 실행해보기
{
yield return new WaitUntil( () => count > dialogue.Length);
SceneManager.LoadScene("lifeover");
}


}
//대화 끝나면 자동으로 다음 씬으로 넘기는 기능 만들어보기!!
//이를 처리 하기 위해서는 콜백함수,델리게이트(함수를 가지는 변수!) 이용해보기!
//함수 밖으로 뺀다는 것 -> 파라미터로 받는 걸 의미!