Playmaker全面實踐教程之簡單的使用Playmaker示例
Playmaker全面實踐教程之簡單的使用Playmaker示例
簡單的使用Playmaker示例
透過本章前面部分的學習,相信讀者已經對Playmaker有了一個整體的認識和印象了。在本章的最後,我們將以一個使用了Playmaker外掛的簡單示例作為結尾。一方面可以讓讀者瞭解Playmaker的使用流程,另一方面還可以讓讀者體會一下不使用Playmaker外掛並實現同樣效果的編寫指令碼程式碼的方法。
Playmaker示例效果說明
遊戲的場景中只有兩個可見的遊戲物件,它們分別是Cube和Sphere。本示例將要求它們可以接收滑鼠的“按下”和“彈起”事件,並做出反應,即改變自身的顏色。具體來說遊戲示例的效果展示主要分為四個階段:
q 階段一:遊戲執行前,Cube和Sphere的表面都呈現白色;
q 階段二:遊戲開始執行,Cube和Sphere的表面都自動變成黃色;
q 階段三:令滑鼠在Cube或者Sphere物件上方被按下,Cube或者Sphere的表面會做出反應(即變為白色);
q 階段四:讓Cube或者Sphere物件上處於按下狀態的滑鼠彈起(即釋放滑鼠按鍵),Cube或者Sphere的表面會做出反應(即變為黃色);
示例的效果如圖1-42所示。其中需要特別注意的是:
q Cube物件的效果是藉助於指令碼程式碼實現的;
q Sphere物件的效果是藉助於Playmaker外掛實現的;
圖1-42 示例的效果展示
接下來的兩節就來說明這個示例效果是如何藉助於Playmaker外掛和指令碼程式碼的。
使用Playmaker外掛
請依次完成下列操作,來體會使用Playmaker外掛,讓Sphere物件可以接收滑鼠“按下”和“彈起”事件,並做出反應的操作流程:
1.為遊戲物件新增“狀態機”
選中Sphere,然後右擊playMaker的Graph View空白處,選擇Add FSM命令,可以新增預設名為FSM的狀態機。狀態機中包含了一個狀態(預設名為State),將其重新命名為Yellow,如圖1-43所示。
圖1-43 為Sphere新增狀態機(預設名為FSM),以及新的狀態(Yellow)
提示:Playmaker外掛對遊戲場景中,遊戲物件行為和效果的控制都依賴於狀態機!所以第一步操作就是為遊戲物件Sphere新增狀態機。
2.為狀態新增“過渡事件”
右擊狀態Yellow,單擊Add Transition|System Events|MOUSE DOWN命令,為狀態Yellow新增名為MOUSE DOWN的系統事件,如圖1-44所示。
圖1-44 為狀態Yellow新增系統事件MOUSE DOWN
提示:“過渡事件”就是遊戲物件可以接收到的事件。在本示例中我們要求Sphere物件可以接收到滑鼠的“按下”和“彈起”事件。因此,就需要讓遊戲物件Sphere可以接收到MOUSE DOWN和MOUSE UP事件。
3.為狀態機新增新的“狀態”
右擊playMaker的Graph View空白位置,單擊Add State命令,手動新增一個狀態,命名為White。接下來使用與上一步驟相似的方法,為White狀態新增名為MOUSE UP的系統事件,得到的狀態機如圖1-45所示。
圖1-45 Sphere物件上的狀態機FSM,及其狀態Yellow和White、系統事件MOUSE DOWN和MOUSE UP
提示:“狀態”可以表示遊戲物件特定時刻的外觀或者屬性。本示例我們要讓Sphere的表面呈現兩種顏色,即“黃色”和“白色”。也就是說需要兩個狀態,因此狀態機中包含狀態Yellow和White。
4.在狀態間建立“過渡”
拖動過渡事件MOUSE DOWN到狀態White,可以引出一條從狀態Yellow到White的連線(過渡)。使用同樣的方法建立從狀態White到Yellow的連線(過渡),得到的狀態機如圖1-46所示。
圖1-46 Sphere物件上的狀態機,以及兩個狀態之間的過渡
提示:“過渡”發生在“狀態”之間,通常用於表示狀態的改變。本示例中Sphere從“黃色”變為“白色”就屬於狀態的改變,因此我們需要新增“過渡”。
5.為狀態新增“動作”
選中狀態Yellow,在Inspector Panel的State的標籤中,單擊右下角的Action Browser按鈕,調出Actions編輯器視窗。雙擊Actions編輯器視窗Material分類下的Set Material Color,可為Yellow狀態新增Set Material Color動作,如圖1-47和圖1-48所示。
圖1-47 為狀態Yellow新增Set Material Color動作1
圖1-48 為狀態Yellow新增Set Material Color動作2
提示:“動作”可以被認為是一個具體的行為。本示例中,Sphere會變成“黃色”或者“白色”,就相當於狀態機需要將Sphere設定成“黃色”和“白色”這個動作,因此我們使用了動作Set Material Color。
6.設定動作的“屬性”
在Inspector Panel裡修改狀態Yellow動作Set Material Color的Color屬性為黃色。使用與上一步驟相同的方式,為狀態White新增Set Material Color動作,並設定Color屬性為白色,如圖1-49所示。
圖1-49 設定狀態Yellow和White各自Set Material Color動作的Color屬性
現在,讓Sphere物件接收滑鼠“按下”和“彈起”事件,並做出反應的效果就完成了!需要提醒讀者以下兩點,如圖1-50所示。
q 擁有狀態機的遊戲物件,會在Scene檢視中被“玩”圖示標識;
q 遊戲執行時,擁有狀態機的遊戲物件,會在Game檢視中被“狀態名稱”標識;
圖1-50 擁有狀態機的遊戲物件Sphere
提示:本示例是讀者第一次接觸Playmaker外掛後,首次看到的Playmaker在遊戲專案中的應用,因此本節對其中涉及到的操作,使用了及其詳細的圖示和文字進行了描述,以求讀者無歧義、快速和直觀的感受操作流程。而本書接下來的章節再講解到示例的時候就不會這麼詳盡了,希望讀者能夠諒解。
Playmaker使用指令碼程式碼
請依次完成下列操作,來體會使用指令碼程式碼,讓Cube物件可以接收滑鼠“按下”和“彈起”事件,並做出反應的操作流程:
1.建立指令碼並新增程式碼
在Project檢視裡,新建一個C#指令碼,並命名為CheckMouseClick,為此指令碼新增下面的程式碼:
- 01 using UnityEngine;
- 02 using System.Collections;
- 03
- 04 public class CheckMouseClick : MonoBehaviour
- 05 {
- 06 private Renderer rend;
- 07
- 08 // Use this for initialization
- 09 void Start ()
- 10 {
-
11 rend = GetComponent
(); - 12 rend.material.color = Color.yellow;
- 13 }
- 14 void OnMouseDown()
- 15 {
- 16 rend.material.color = Color.white;
- 17 }
- 18 void OnMouseUp()
- 19 {
- 20 rend.material.color = Color.yellow;
- 21 }
- 22 }
對於此指令碼,需要說明的是:
q 指令碼09~13行,會在遊戲執行的最開始,讓Cube物件變成黃色;
q 指令碼14~17行,會讓Cube物件接收到滑鼠“按下”事件,並做出反應“變為白色”;
q 指令碼18~21行,會讓Cube物件接收到滑鼠“彈起”事件,並做出反應“變為黃色”;
2.將指令碼賦予遊戲物件
將指令碼CheckMouseClick賦予遊戲物件Cube,如圖1-51所示。現在讓Cube物件接收滑鼠“按下”和“彈起”事件,並做出反應的效果就完成了!
圖1-51 被賦予CheckMouseClick指令碼的遊戲物件Cube
Playmaker比較兩種方式
本示例分別使用Playmaker外掛和指令碼程式碼,實現了讓遊戲物件接收滑鼠“按下”和“彈起”事件,並做出反應的功能。本小節將對這兩種方式做一個比較,然後說明為什麼為數眾多的開發者會選擇Playmaker外掛!
首先,如果只是單純的看兩種方式在本節中所佔的篇幅的話,無疑會給讀者Playmaker很複雜,而指令碼程式碼很簡單的錯誤印象。說這個印象是錯誤的原因是:
q 指令碼程式碼的篇幅短,是因為此種方式所涉及到的操作並不多(三步:新建指令碼,新增程式碼,賦予遊戲物件),所以在書中所佔的篇幅就少。但是指令碼程式碼的難點在於,指令碼程式碼中的程式碼是要自己去書寫的,其中用到的類、方法、事件等等,都是需要去API手冊中查閱的。
q Playmaker的篇幅長,是因為涉及到的檢視和操作都多,所以在書中用到了更多的篇幅,但是讀者應該發現了,操作再多我們也是單純的透過滑鼠的各種操作(單擊,右擊,拖動)就將功能實現了,也無需參考任何手冊。
其次,與指令碼程式碼相比,Playmaker的狀態機檢視可以更直觀的呈現功能的實現流程,例如,一眼看出狀態、事件的個數,以及它們是如何影響到遊戲物件行為的,如圖1-52所示。
圖1-52 Playmaker中的狀態機與指令碼中的程式碼
最後,Playmaker的可操作性優於指令碼程式碼:
q 對於遊戲開發的初學者而言,在不寫程式碼的前提下就可以完成遊戲的製作,無疑可以大大的降低學習的門檻,讓更多的人參與進來,體會製作遊戲的樂趣;
q 對於有經驗的遊戲開發者而言,Playmaker能快速的實現他們的遊戲設想或者說是靈感,而且方便他們整理思路,隨時改進想法。也就是說,Playmaker可以讓他們快速的得到遊戲的雛形,並驗證這種想法的可行性!
本文選自:Playmaker全面實踐教程Input篇大學霸資料,轉載請註明出處,尊重技術尊重IT人!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29597077/viewspace-1672130/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Playmaker全面實踐教程之playMaker編輯器
- Playmaker全面實踐教程之Playmaker常用工具
- Playmaker Input篇教程之PlayMaker選單概述
- Playmaker Input篇教程之Playmaker購買下載和匯入
- Playmaker Input篇教程之引入的核心概念
- PlayMaker GUI的NormalizedGUIORMZed
- PlayMaker GUI跟隨佈局的使用GUI
- PlayMaker的Transition和Global Transition
- PlayMaker的特殊事件FINISHED事件
- PlayMaker佈局技巧:預覽GUI介面GUI
- Java使用ObjectMapper的簡單示例JavaObjectAPP
- Kafka實戰-簡單示例Kafka
- FaaS的簡單實踐
- POP簡單介紹與使用實踐
- sed命令簡單使用示例分享
- AOP的簡單示例
- flv.js簡單使用示例JS
- shell的圖形化實現簡單示例
- Java培訓教程之使用Jsoup實現簡單的爬蟲技術JavaJS爬蟲
- Flutter MVVM 簡單實踐FlutterMVVM
- vue 實現原理及簡單示例實現Vue
- mvc架構的簡單實踐----使用者註冊的實現MVC架構
- 【C#入門超簡單】簡單的專案實踐C#
- three.js簡單實踐JS
- vue專案中使用token的身份驗證的簡單實踐Vue
- oracle的訊息簡單示例Oracle
- 《EJB實用原理和實戰示例》中的實戰示例問題請教
- 簡單介紹Go 字串比較的實現示例Go字串
- jsoncpp簡單示例JSON
- c#12 實驗特性Interceptor如何使用的一個簡單但完整的示例C#
- Android MVP模式--簡單實用示例 BMIAndroidMVP模式
- DRY原則的一個簡單實踐
- 調需式優化的簡單實踐優化
- Mycat分庫分表的簡單實踐
- 一次簡單的實踐(ubuntu下)Ubuntu
- UGUI全面實踐教程UGUI
- 簡單實現微服務架構的實踐分享微服務架構
- Dubbo入門(2) – 簡單實踐