前往
大廳
主題

Unity2D #1 什麼是 修飾詞、方法、變數 ?

栗悟飯與龜波功 | 2020-11-03 15:21:31 | 巴幣 114 | 人氣 604

Unity2D 筆記

還不是很專業但我想把我懂的知識紀錄在這裡
也許剛好有需要的人可以學到一些皮毛,這算是一篇新手可以學的文章

不過我只做2D的部分 嘻嘻
想要更深的技巧這一系列可能不適合(應該)

如果哪裡有錯的也請各位大佬 能指點一下

2021/4/19更新內文(不是改很多


修飾詞:
什麼是修飾詞?
Public
Private
Static
Protected

你可以想像是「使用權限」那樣的東西
用來告訴unity你要指派的變數或其他程式
的使用權限

am我所知的修飾詞,我的理解是:

Public = 公用內容
可以在unity編輯器中把遊戲物件拉到程式上
有 public 定義的格子中,在同一個程式中使用

如果把場景中的物件拉到public上,就等同告訴程式你的物件是你剛剛拉的東西。



Private = 不開放內容
不可從unity 編輯器中改變內容,只能從同一個程式裡變動,其實不加也可以,如果沒有給予其他修飾詞,unity它預設就是 private ,只是它不顯示
那private存在意義是啥?

可能是告訴使用者說明這是不公開的,代表無法被存取,以便日後找bug 可以排除一個可能

也有可能是寫完程式沒有對齊,強迫症發作,所以加個private來排版用



Static = 靜態( 全部類別共用的同一個內容 )
你可以理解為,它是一個被固定被寫好的東西
電腦程式它無法咬定說,今天這個東西是不是就真的固定不會變動,你沒說清楚我不能輕易告訴你。

反之你加了static 就表示電腦確定這是專屬的,固定的,是已經設計好的程式

已經準備好被使用了
你可以準確的看到它然後用它

而且static還可以再加上其他修飾詞
像是public static
這樣該欄位的程式就能在全程式中隨意呼叫使用

public static 你可以理解為
公開該程式的指定內容,可以在任何地方使用
不可能是其他程式或其他名稱相同的內容
例如:
Public class A

        public static int y = 16;
    }
Public class B

         Public int y = 16;
    }
這兩個有什麼區別
你可以在class B 裡面呼叫 class A 的y
你不可以在class A 裡面呼叫 class B 的y

再舉個例:
你:欸你現在在哪裡?  (B程式)
朋友:我在打咖            (A程式)
你:在哪裡的?    
  (B程式想呼叫A程式中的y,但y 沒有加static
無法確認就是那個y)
朋友:出來後站 往左走 往有7-11的那一條巷子裡(A程式中已經有指定y 為static )
你:好 等下就到      (B程式呼叫 A.y  )

上面舉例可能有誤,能理解嗎?

再無法理解的話,你只要想成是:
此y非彼y

如果你在A程式中想要呼叫B程式的所有共用內容
寫法是:
Public static  A(類別名稱) am(變數名稱);
Private Awake()
{
   am = this;
}
這樣的話你在其他程式中打:
A.am 再打一個 「.」
就能看到在A類別中共用的變數或其他東西
我都這樣搞,覺得很方便,但也有人說這樣不好,當程式寫多了,會變得難維護,總之看你


Protected = 類別的共用內容
只能在同類別或被繼承的類別中使用
要用到「繼承」專用的修飾詞
類別和繼承這類的東西我之後在寫一篇說明



方法:
什麼是方法
其實就是 打開程式後看到
Void Start();
Void Update();
這就是一種
你可以想像是程式區塊,你寫遊戲程式主要都是
寫在裡面

只要是(參數名稱)再加上「()」左右括號
例如: bigass();
都是方法

它主要用來方便呼叫  單一功能的程式
讓你要的功能不用每次寫,獨立放在另一塊程式
想用的話呼叫它就好

有時候 會在前面看到
void
它是指沒有傳回值(return)的方法,執行到結尾時就停止了並繼續下一段程式

加了void的方法你可以想成是一種迴圈
傳回值return 就類似 break

若在程式中加入return,程式就會跳出
直接執行下一段程式

也可以不加 void但會需要傳回值
例如:
Int ass()
{
return 0;
}
這樣的話ass的值 會變成0
return 會把後面的參數傳給開頭的ass

而這樣呼叫ass();
就獲得剛剛取得的參數

這可以做很多變化,就看你怎麼用了


方法還有一種特性,可以在括號內加入參數
而你可以在程式內使用你設定的參數
例如:
void ass(int  am , string  boobs)

Int I = am;
String bigass = boobs;

這樣的話,你呼叫方法時你給的參數會在程式裡做事

方法後面括號加入的參數,叫做 「引數」
當你在方法中加入引數時
你呼叫的方法後面也要有相對應的參數
例如:
有int 就要放數值



變數:
什麼是變數?

能隨時改變內容的載體

想像一下
一個蛋糕盒裡面有三塊蛋糕
蛋糕盒就是變數名稱(載體)
裡面的蛋糕數量就是數值內容

然而,能被賦予變數載體的參數有哪些呢~
整數 int
只能儲存正與負的正整數:5,-3 等等。

浮點數 float
跟int一樣,但能設定有小數點的數字:1.9f
凡是浮點數後面都要加「f」 告訴電腦它是float

雙精度浮點數 double
與float一樣,一樣能儲存正整數或小數點,只是它不用加「f」,它可以儲存比float更大的數值,而且記憶體消耗也更大量
am我從沒用過double,平常用double unity都會錯誤...
完全不知道這東西能幹嘛

字串 string
能儲存文字、數字、特殊符號字元
例如:   ”幫kirito撐10sec_oh_man,c8763”
只要是字串,就一定要在前後加 「”」
表示是文字載體的一種

它還有一個特殊用詞叫:
換行 (\n ),在字串中任意處加入斜線n,之後的內容會跑到下一行

布林 bool
只能儲存true和false (可以理解為:是(true) 與 否(false))
它是一種邏輯的概念,大多用來判斷條件
它有很多個用來邏輯判斷的用詞
例如:>=    && 之類的,不過這算是邏輯運算的部分,之後會寫一篇說明

可是bool能做什麼呢?
*能用在同樣類型的方法上*
雖然每個變數都能這樣說,但bool我要特別強調
想想 unity 有什麼東西是有bool要素的

我第一個想到的是物件上的元素顯示
物件指的是 unity 場景中的GameObject
元素指的是物件掛載的功能,例如:
Transform (預設的元素,用於給予物件3維座標)
gameObject (算是隱藏的預設元素,表示存在在場景中)

其實你把程式拖到物件上的那個程式
是元素(Components) 的一種

而每個元素都能被打開或關閉,所以可以透過bool
來控制元素的開關。

還是看不懂上述 bool 的用途嗎?

如果想要讓 a 碰到 b 時,b 物件的圖片要消失,但是又想保留 b 物件,只讓圖片消失而已。

你可以這麼做:
Public  bool boobs;
Void OnTriggerEnter2D(Collider ass)
{
   If(a.Getcomponent<Collider>().IsTouching(ass))
   {
        ass.Getcomponent<SpriteRenderer>().enable = boobs;
    }
}

這個是當 a 碰到 b 時,b會抓取它的圖片元素
再來把圖片的顯示與否交給 bool 來控制

當然這會有一個問題,碰到的物件不會每個都有圖片的元素,通常會再加一個if來判斷null





* 類別、繼承
* 邏輯運算
(上面是提醒 我說之後要做的內容)

總之就先講講這些,還有很多功能我也想一一說明
不過等之後吧,現在我也在弄我的遊戲




創作回應

樂小呈
Static 是靜態
理解起來可以是[同一個],無論在哪,從這個class取的的static變量都會是[同一個]
2020-11-03 16:39:42
栗悟飯與龜波功
哦OK 等等改一下 謝大佬
2020-11-03 17:13:58

更多創作