藍圖初體驗
- 面向對象的思想:ue4中很多的概念其實都可以了解成類、對象與執行個體的等價與變體,比如static mesh、藍圖類、actor等。
- 藍圖的本質和c++是一樣的,但是在表現形式上略有不同。比如,藍圖在調用資料時比如get該資料;藍圖的連接配接順序是操作順序而非思考的邏輯順序,是以有時局部會産生“從右往左看”的感覺;藍圖由各種節點和它們之間的關系構成。
Tips
- 在藍圖中修改完後,應該回到原主視口播放,而不是在藍圖編輯器中的主視口播放。
- 播放後應點選一下關卡界面,讓視窗焦點回到主程式上,否則可能鍵盤事件無法産生響應。
- 在“play”的下拉清單中,将“default player start”改成“current camera location”,則播放時的視角即為目前視角,否則每次播放時都會回到某一特定視角。
- 事件event可以了解成函數function。
- 藍圖變量右邊有“眼睛”辨別,當“眼睛”打開時,可以在世界大綱中修改該變量。
常用快捷鍵
- 在世界大綱中點選對象并按F,能夠快速聚焦到該對象上。
- 按Alt并點選藍圖中的連線,可以删去這條線。
- 藍圖中按右鍵可選擇節點。
- 藍圖中選擇一塊區域并按C,可編輯注釋comment。
部分節點說明
- 啟用鍵盤事件響應前必須先Enable Input。
- Sequence的多個事件是從上到下執行的,但并非執行完上一個事件後才開始執行下一個,是以某種程度上可以看作并行的。
- Set Timer by Event相當于開了個計時器的多線程(單片機中似乎也有類似的概念),左邊的接口應該了解為,當時間達到Time的時候,調用Event事件。
- Gate相當于輪詢中的條件語句,每次都試圖Enter并執行Exit的語句,但隻有Open的時候允許Enter,如果觸發Close則不能再進入。
- AddActorWorldOffset設定整個Actor相對世界的偏移(絕對坐标的變化)。
- Update Instance Transform中的New Instance Transfrom可以裂變為Location、Rotation和Scale三組量;Mark Render State Dirty開啟渲染,當需要同時渲染多個instances時,應該在最後一個instance處勾選該選項。
- Make Vector将一組标量轉化為一個向量。
- For Each Loop左邊的Array表示需要周遊的數組,通過Array Element和Array Index可讀取數組的内容和下标。
疑問待解決
Row name和Row具體是什麼東西?
已解決:Row names是一個array,每個array element就是各行的row name,在這個例子裡即1,2,3,4,5……這段的邏輯是,我們提取row names,然後在data table中搜尋各個row name,如果找到了,就把整行的資料都加到move data中去。
為什麼此處需要Get Instance Transform的節點?
已解決:New Instance Transform一定要輸入,而此時所有instance位置已經更新完畢了,隻是沒有渲染出來。是以我們隻要更新其中一個instance,将Mark Render State Dirty選項勾上,所有instance就都會重新渲染。