制作一個可以生成對話氣泡,顯示對話臺詞的簡單組件。這個組件要的變量:臺詞(外部傳入)。功能:開始對話(生成氣泡UI) ,結束對話。
一、對話組件創建
二、開始對話事件
1、注意這里獲取的是 owner(擁有者) ,組件可能掛到隨意對象上。因為這個對象不固定,所以不能獲取玩家角色或者第三人稱角色。? ? ?按類添加組件
2.這里1添加的組件時widget組件,是動態生成的,不是和bpc_talk一樣手動掛上的。生成后對象就有了widget組件,但是只是一個占位符,里面是空的,需要4給它賦予控件。 這里設置的是這個組件其他屬性(顯示空間、碰撞、位置)
3.創建UI氣泡控件(這個控件要放入控件(widget)組件中去的),它要臺詞信息,所以生成時候作為接口暴露出來。? 這里Owning actor也是自己創建并暴露的接口。Owning Player則是節點默認自帶的。
4.控件對象賦予控件組件。
三、結束對話事件
詢問之前創建的控件組件是否有效,并設置為空。
四、UI控件制作
1.前端
按鈕在前,覆層,文本和背景。文本換行要自動包裹文本,并且文本變量化。
2.后端
變量創建:按鈕用于點擊文本框切換下一句臺詞。 劇本由外部臺詞傳入,num表示劇本語句索引。Owning actor表示擁有者,由外部導入。因為這個UI控件生成時并沒任何擁有者,是后面把它作為了控件組件的控件實體。它無法像bpc_talk一樣獲取到擁有者。需要外部傳入。
UI顯示時,默認顯示第一句話,人物無法接受輸入,只有UI能響應輸入,顯示鼠標。
給按鈕添加單擊事件,索引加1,顯示下一句臺詞。索引超過劇本長度時代表臺詞說完,需要結束對話。這里這個控件并不是其他控件的子項,所以不是用remove from parent移除,而是通過調用之前組件的 結束對話事件。所以這里要通過擁有者找到組件,再調用組件方法。輸入和鼠標恢復。
五、對象掛組件
1.掛上組件
2.創建劇本臺詞
3.調用組件方法。 注意開始對話前,要先退出之前的對話。