Playmaker全面實踐教程之簡單的使用Playmaker示例

Playmaker全面實踐教程之簡單的使用Playmaker示例

簡單的使用Playmaker示例

經過本章前面部分的學習,相信讀者已經對Playmaker有了一個總體的認識和印象了。在本章的最後,咱們將以一個使用了Playmaker插件的簡單示例做爲結尾。一方面可讓讀者瞭解Playmaker的使用流程,另外一方面還可讓讀者體會一下不使用Playmaker插件並實現一樣效果的編寫腳本代碼的方法。編輯器

Playmaker示例效果說明

遊戲的場景中只有兩個可見的遊戲對象,它們分別是CubeSphere。本示例將要求它們能夠接收鼠標的「按下」和「彈起」事件,並作出反應,即改變自身的顏色。具體來講遊戲示例的效果展現主要分爲四個階段:學習

q  階段一:遊戲運行前,CubeSphere的表面都呈現白色;this

q  階段二:遊戲開始運行,CubeSphere的表面都自動變成黃色;spa

q  階段三:令鼠標在Cube或者Sphere對象上方被按下,Cube或者Sphere的表面會作出反應(即變爲白色);插件

q  階段四:讓Cube或者Sphere對象上處於按下狀態的鼠標彈起(即釋放鼠標按鍵),Cube或者Sphere的表面會作出反應(即變爲黃色);orm

示例的效果如圖1-42所示。其中須要特別注意的是:對象

q  Cube對象的效果是藉助於腳本代碼實現的;教程

q  Sphere對象的效果是藉助於Playmaker插件實現的;遊戲

1-42  示例的效果展現事件

接下來的兩節就來講明這個示例效果是如何藉助於Playmaker插件和腳本代碼的。

使用Playmaker插件

請依次完成下列操做,來體會使用Playmaker插件,讓Sphere對象能夠接收鼠標「按下」和「彈起」事件,並作出反應的操做流程:

1.爲遊戲對象添加「狀態機」

選中Sphere,而後右擊playMakerGraph 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 DOWNMOUSE UP事件。

3.爲狀態機添加新的「狀態」

右擊playMakerGraph View空白位置,單擊Add State命令,手動添加一個狀態,命名爲White。接下來使用與上一步驟類似的方法,爲White狀態添加名爲MOUSE UP的系統事件,獲得的狀態機如圖1-45所示。

1-45  Sphere對象上的狀態機FSM,及其狀態YellowWhite、系統事件MOUSE DOWNMOUSE UP

提示:「狀態」能夠表示遊戲對象特定時刻的外觀或者屬性。本示例咱們要讓Sphere的表面呈現兩種顏色,即「黃色」和「白色」。也就是說須要兩個狀態,所以狀態機中包含狀態YellowWhite

4.在狀態間創建「過渡」

拖動過渡事件MOUSE DOWN到狀態White,能夠引出一條從狀態YellowWhite的連線(過渡)。使用一樣的方法創建從狀態WhiteYellow的連線(過渡),獲得的狀態機如圖1-46所示。

1-46  Sphere對象上的狀態機,以及兩個狀態之間的過渡

提示:「過渡」發生在「狀態」之間,一般用於表示狀態的改變。本示例中Sphere從「黃色」變爲「白色」就屬於狀態的改變,所以咱們須要添加「過渡」。

5.爲狀態添加「動做」

選中狀態Yellow,在Inspector PanelState的標籤中,單擊右下角的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 ColorColor屬性爲黃色。使用與上一步驟相同的方式,爲狀態White添加Set Material Color動做,並設置Color屬性爲白色,如圖1-49所示。

1-49  設置狀態YellowWhite各自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<Renderer> ();

  • 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人!

相關文章
相關標籤/搜索