Unity3D的數(shù)據(jù)類型以及PlayMaker的變量

變量(variable)是用來儲存數(shù)據(jù)的迁筛。

程序語言通常都會針對不同的用途設(shè)置不同的數(shù)據(jù)類型咳蔚,以提高儲存效率。因此在設(shè)置變量時锯茄,需要事先申明好變量的數(shù)據(jù)類型涛菠。

  • 保存“是”或者“非”的判斷數(shù)據(jù),僅需要1bit的儲存空間撇吞;
  • 而 8bit = 1byte俗冻,于是1byte空間如果用來保存整數(shù)的話,就只能包括64個不同的整數(shù)了牍颈,不考慮負(fù)數(shù)的話只能063迄薄,考慮負(fù)數(shù)則只能-3132;
  • 但要保存一段文字內(nèi)容煮岁,所需要的儲存空間就大得多了讥蔽。

Unity3D中常用的數(shù)據(jù)類型

Bool

“布爾”數(shù)據(jù)類型,其值要么是“True”(代表1)要么是“False”(代表0)画机。

Bool數(shù)據(jù)常常用來表達(dá)一個判斷冶伞,例如“場景中是否有Player”、“是否發(fā)生了碰撞”等等步氏。

Int

Int數(shù)據(jù)用來表示整數(shù)响禽,包括正整數(shù)、負(fù)整數(shù)、0芋类。

我們通常用int數(shù)據(jù)儲存諸如:“xxx物體的數(shù)量”這樣的數(shù)據(jù)隆嗅。另外,for循環(huán)中也用int來計數(shù)侯繁。

Float

Float數(shù)據(jù)用來表示“小數(shù)”胖喳,同樣包括正數(shù)、負(fù)數(shù)贮竟、和0丽焊。當(dāng)然整數(shù)也可以用float數(shù)據(jù)類型來儲存,只不過有點浪費咕别。

如果我們寫腳本的時候直接賦值 a = 1粹懒,那么系統(tǒng)會自動將變量a設(shè)置為int類型,如果需要讓系統(tǒng)自動將a設(shè)置為float顷级,則可以寫成 a = 1.0 或者 a = 1f凫乖。
同理,如果讓系統(tǒng)計算 a = 3 / 5弓颈,系統(tǒng)會認(rèn)為3和5都是int類型帽芽,于是結(jié)果會 = 0。除非寫成 a = 3f / 5f翔冀, 系統(tǒng)才會算出 = 0.6 导街。

Float數(shù)據(jù)的應(yīng)用范圍就很廣泛了,距離纤子、時間搬瑰、速度等等。

String

String數(shù)據(jù)用來表示“字符串”控硼,也就是文字內(nèi)容泽论。

游戲中要儲存一句對話,就需要使用string類型的數(shù)據(jù)卡乾;獲取游戲物體的名字翼悴,其數(shù)據(jù)格式也是string。

要注意的是幔妨,UI中使用的文字都是string格式的鹦赎,如果我們希望顯示生命值為10,那么需要把10這個float類型的數(shù)據(jù)先轉(zhuǎn)換成string類型的數(shù)據(jù)再賦給相應(yīng)UI組件來使用误堡。

Vector2

Vector2是二維矢量數(shù)據(jù)古话,相當(dāng)于兩個float數(shù)據(jù)組合起來。

很多數(shù)據(jù)需要成對出現(xiàn)才有意義锁施,比如屏幕坐標(biāo)陪踩、方形的長寬等等杖们,這時候就要用到Vector2。

Vector2數(shù)據(jù)寫法是用,將兩個float數(shù)據(jù)連起來膊毁,再用<<>>框起來,比如<<320, 240>>這樣基跑。

Vector3

Vector3是三維矢量數(shù)據(jù)婚温,相當(dāng)于三個float數(shù)據(jù)組合起來。

Vector3的使用就很常見了媳否,一個物體在三維空間中的坐標(biāo)栅螟,運動的方向,translate篱竭、rotate力图、scale值,顏色(RGB)等數(shù)據(jù)都使用Vector3來儲存掺逼。

Vector3的寫法和Vector2一樣吃媒,只不過多了一個float數(shù)據(jù),比如<<2, 4, 6>>

注意:Vector2和Vector3的每一個分量都是float形式的吕喘,所以寫的時候不需要加“f”赘那。

GameObject

GameObject類型的數(shù)據(jù)就沒有上面這些那么好理解了,我們姑且認(rèn)為這就是Unity3D中用來表示一個游戲物體的專有數(shù)據(jù)就好了氯质。

實際上募舟,GameObject與其說是一個“數(shù)據(jù)”,不如說是一個“對象”闻察。只不過我們還不了解什么叫“對象”拱礁,所以姑且當(dāng)它是個特殊的數(shù)據(jù)吧。

Array

Array是“數(shù)組”辕漂,前述的任何一種數(shù)據(jù)類型呢灶,多個數(shù)據(jù)按順序組合到一起就是一個“數(shù)組”。

比如可以將全班所有人的名字組合成一個string類型數(shù)據(jù)的Array:names[] = {"name1", "name2", "name3", "name4"}钉嘹,如果需要獲取name1填抬,則需要通過names[0]來得到。

所以隧期,一個有4個數(shù)據(jù)的數(shù)組飒责,其編號是0、1仆潮、2宏蛉、3,沒有4性置。

同時拾并,數(shù)組只能將同一類型的數(shù)據(jù)放在一起,不能混搭,混搭就成了對象(object)了嗅义。

Enum

Enum是一個“狀態(tài)”數(shù)據(jù)屏歹。我們可以定義一個Enum,然后指定給它多個狀態(tài)之碗,比如“吃飯”蝙眶、“睡覺”、“打豆豆”之類褪那,然后通常這個Enum會被用在一個Switch條件語句中幽纷。


PlayMaker中使用變量

pm_variable_new0.png

在PlayMaker的Variable面板中可以新建變量。變量通常僅在該FSM中使用博敬,如果需要在多個FSM中自由調(diào)用該變量友浸,需要將其定位為Global Variable。

pm_variable_new1.png

如果需要在Inspector中修改變量偏窝,需要勾上“Inspector”選項收恢。

PlayMaker提供多種數(shù)據(jù)類型給我們使用:

pm_variable_types.png

除了使用前面提到的Unity3D數(shù)據(jù)類型作為變量類型以外,PM還提供了一些比較特別的變量類型祭往。比如:

  • Color:用來表示顏色派诬,本質(zhì)上是Vector3
  • Rect:用來表示一個矩形方框的大小和在屏幕坐標(biāo)系的位置,本質(zhì)上是4個float的組合(X:方框左上角的橫軸坐標(biāo)链沼;Y:方框左上角的縱軸坐標(biāo)默赂;W:方框?qū)挾龋籋:方框高度)括勺,當(dāng)然我們也可以用來表示別的東西
  • Material:材質(zhì)缆八,用來儲存一個材質(zhì)球(material)資源
  • Texture:貼圖,用來儲存一張圖片資源
  • Quaternion:代表物體旋轉(zhuǎn)角度的數(shù)據(jù)疾捍,但不同于我們常用的rotateX奈辰,rotateY,rotateZ這種算法
  • ObjectObject不是GameObject乱豆!Object其實是用來存放組件(component)的奖恰。對于一些PM中沒有專門action支持的component,PM提供了Object這么一種數(shù)據(jù)類型讓我們可以通過Get Component去獲取一個component宛裕,然后在通過Get PropertySet Property來獲取或設(shè)置目標(biāo)component的某個屬性
  • Enum:PlayMaker的Enum不能自行創(chuàng)建其包含的狀態(tài)瑟啃,只能使用Unity3D已有的Enum結(jié)構(gòu)來生成變量

PlayMaker中所使用的變量都需要在PlayMaker中提前定義好。而且揩尸,由于PlayMaker又是可視化界面蛹屿,因此對于所用數(shù)據(jù)的數(shù)據(jù)類型十分敏感,一個GameOjbect類型的數(shù)據(jù)是放不進(jìn)一個Vector3類型的參數(shù)中去的岩榆。

初學(xué)者一般都不是非常清楚每個Action的每個參數(shù)都需要哪種類型的數(shù)據(jù)错负。所以建議通過在Action的參數(shù)選擇框中選擇New Variable來創(chuàng)建變量坟瓢,這樣就可以得到正確的數(shù)據(jù)類型了:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市犹撒,隨后出現(xiàn)的幾起案子折联,更是在濱河造成了極大的恐慌,老刑警劉巖识颊,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诚镰,死亡現(xiàn)場離奇詭異,居然都是意外死亡谊囚,警方通過查閱死者的電腦和手機怕享,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進(jìn)店門执赡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來镰踏,“玉大人,你說我怎么就攤上這事沙合∧醵瑁” “怎么了黍判?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我促脉,道長,這世上最難降的妖魔是什么川慌? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任驹饺,我火速辦了婚禮,結(jié)果婚禮上最仑,老公的妹妹穿的比我還像新娘藐俺。我一直安慰自己,他們只是感情好泥彤,可當(dāng)我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布欲芹。 她就那樣靜靜地躺著,像睡著了一般吟吝。 火紅的嫁衣襯著肌膚如雪菱父。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天剑逃,我揣著相機與錄音浙宜,去河邊找鬼。 笑死蛹磺,一個胖子當(dāng)著我的面吹牛梆奈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播称开,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼亩钟,長吁一口氣:“原來是場噩夢啊……” “哼乓梨!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起清酥,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤扶镀,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后焰轻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體臭觉,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年辱志,在試婚紗的時候發(fā)現(xiàn)自己被綠了蝠筑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡揩懒,死狀恐怖什乙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情已球,我是刑警寧澤臣镣,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站智亮,受9級特大地震影響忆某,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜阔蛉,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一弃舒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧状原,春花似錦聋呢、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瓦呼,卻和暖如春喂窟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背央串。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工磨澡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人质和。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓稳摄,卻偏偏與公主長得像,于是被迫代替她去往敵國和親饲宿。 傳聞我的和親對象是個殘疾皇子厦酬,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 10,960評論 6 13
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法仗阅,內(nèi)部類的語法昌讲,繼承相關(guān)的語法,異常的語法减噪,線程的語...
    子非魚_t_閱讀 31,623評論 18 399
  • 第一類:邏輯型boolean 第二類:文本型char 第三類:整數(shù)型(byte短绸、short、int筹裕、long) c...
    Jasonme閱讀 1,074評論 0 4
  • 文/Crystal阿魚 說來慚愧 也許是因為寂寞 也許是急于想要忘記上一個人 又或許當(dāng)初是有那么一點點的動心 我正...
    zxyCCrystal閱讀 3,060評論 0 0
  • 搞笑說一句醋闭,讓我想起了衡水一中 彈幕里有人說,飛越瘋?cè)嗽旱慕Y(jié)局形式朝卒,我認(rèn)為點題了 证逻。 如果從未被賦予選擇的權(quán)利,這...
    cookie貓閱讀 819評論 0 0