Unity 專案HTCvive中 PPT播放的實現
設定一個canvas面板,用來存放之後需要觸發的ui元件。
ppt是通過image圖片的改變來實現的。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class RoomPanelButtons : MonoBehaviour { public Text intro; public RoomPanelPanels panels; public void OnEnterButton(string content){ intro.text = content; } public void OnExitButton(){ intro.text = ""; } public void Disable(){ gameObject.SetActive (false); } public void Show(int panel){ panels.gameObject.SetActive (true); panels.Show (panel); GetComponent<Animator> ().SetTrigger ("CLOSE"); } }
設定幾個方法,分別用於button的出發,圖片點選的觸發。
在射線進入button,點選button,退出button的時候,分別呼叫各個方法。
在射線照到指到的時候 執行OnEnterButtor,將text設定為制定的字,射線離開時,執行OnExitButtor,將text至為空。
當點選時,執行show方法,通過設定的變數panel,來決定將哪個panel面板設為setactive。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class PPT : MonoBehaviour { public Sprite[] ppts; public Image img; private int _current; public int Current { set{ _current = value; img.sprite = ppts [value]; } get{ return _current; } } void Start(){ Current = 0; } public void Next(){ if (Current == ppts.Length - 1) { Current = 0; } else { Current++; } } }
設定一個sprite精靈體的陣列,用來存ppt圖片,在panel下面設定一個image子物體,當在image上面點選觸發,執行next方法,每次點選的時候,遞加current值,當current值到陣列的長度-1時,即陣列中最後一張圖片時,將其至為0,從頭開始迴圈。
為了避免在外部修改current數值並且設定為public屬性,在外部函式中可以呼叫到,使用了set get這種函式形式,通過private的變數值為current賦值。
最後,當點選close圖片的時候,執行close方法,將所在的面板setactive設定為false。