今天的文章,要說明如何使用對話管理器來製作遊戲的角色對話介面。
目錄
創建中文字型
對話介面配置
對話管理器
可以從原本電腦的字型中選取,或者是從網路上下載字型資源都可以。將想要的生成的字型拉近專案的資料夾中。
在資料夾中,對剛剛拉進來的字型點選右鍵,創建TextMeshPro的Font Asset。複製好所有對話內容,包含中文字、符號等。
點選 windows>TextMeshPro>Font Asset Creator 進入產生器。
選取原本選定的字型,以及剛剛創建的Font Asset,再貼上複製的對話內容,再依照各自的需求對其他選項作調整,調整好後就可以點選Generate,之後再儲存字型就產生囉。
可依照自己的擺放要顯示的介面,但必須要有TextMeshPro來顯示對話以及Button來控制顯示下一句。
public TextMeshProUGUI textDisplay;
public string[] sentences;
public int index;
public float typingSpeed;
public GameObject DialogPannel;
public GameObject continueButton;
再宣告好string[]變數後,去Unity的Inspector面板中,填入對話的句子,之後會用到。
用foreach將句子中的每個letter分開顯示,WaitForSeconds出現延遲打字效果。
IEnumerator Type() {
foreach (char letter in sentences[index].ToCharArray()) {
textDisplay.text += letter;
yield return new WaitForSeconds(typingSpeed);
}
}
public void NextSentence() {
continueButton.SetActive(false);
if (index < sentences.Length - 1){
index++;
textDisplay.text = "";
typywords.Play();
StartCoroutine(Type());
}
else {
textDisplay.text = "";
continueButton.SetActive(false);
DialogPannel.SetActive(false);
}
}
記得在continueButton這個控制前往下一句話的Button,設置Onclick要觸發NextSentence()這個函式。
判斷句子的letter是不是都出現了,如果都出現了前往下一句話的Button就可以開啟,並處在選擇狀態。
void Update()
{
if (textDisplay.text == sentences[index]) {
continueButton.SetActive(true);
typywords.Stop();
continueButton.GetComponent<Button>().Select();
}
}
以上對話的部分就完成囉!再依據不同的場景會有不同的對話系統去設定就可以了!
那我們明天見~