【Unity&人物屬性】人物屬性大量設定用set,get方法還是public成員
當使用到設定人物屬性的時候,使用set,get方法還是 直接把 人物屬性 設定 為 public成員
本文沒有描述SendMessage方法和使用單例。
----------------------------------------------------------------------------------------------------------------------------------------
首先了解set,get的使用方法
第一種
public PlaneType type { get; private set; } 來自 參考資料2
第二種
public int width
{
get {
return _width;
}
set {
Debug.Log("set :" + value);
_width = value;
}
}
private int _width;
來自 參考資料1
直接使用public
在A.cs設定宣告
public int num;
初始化
num = 10;
在B.cs中使用A.cs的物件,首先這個A.cs 要例項化
意思是在A物體掛載A.cs,B物體掛載B.cs才能夠使得B.cs呼叫A物體的 A.cs
當然,不同物體的掛載多個A.cs,B可以對這些不同物體的掛載多個A.cs都可以呼叫。只要 程式設計師自己清楚。
B物體掛載B.cs才能夠使得B.cs呼叫A物體的 A.cs,該怎麼在B.cs中使用呢
第一步,要找到被呼叫的物體
B物體掛載B.cs要找到A物體的 A.cs的A物體
第二步,對其進行呼叫
使得B物體掛載B.cs 的數值等於 A物體的 A.cs的數值
----------------------------------------------------------------------------------------------------------------------------------------
直接呼叫public 的方法
這個時候為什麼都是 0 呢,因為 A.cs沒有直接賦值,就使得 B物體的B.cs數值沒有改變
這樣改,就行了。這就是為什麼很多 查詢物體,以及很多 被呼叫 的數值 在Awake函式裡面初始化的原因。
在函式Start裡面呼叫自身使用的 變數 初始化 的原因。
----------------------------------------------------------------------------------------------------------------------------------------
使用set,get方法
1.使得set方法私有化private 獲得A的數值
B.cs只是把紅色方框內的A_num改為了_A_num
1.1把初始化放在start函式內
1.2把初始化放在awake函式內
2.使得set方法私有化private 改變A的數值
會出錯,因為A.cs 的_A_num的set方法為私有private。
設定 公有public set 方法
----------------------------------------------------------------------------------------------------------------------------------------
總結:
當很多變數要使用到同一個物件,如果很多個指令碼都要呼叫,修改這個 物件數值,使用私有private set方法,就可以使其僅在自身的指令碼中修改,從而避免出現
那麼什麼情況要用到私有private set 方法,比如遊戲設定,遊戲難度設定等情況
----------------------------------------------------------------------------------------------------------------------------------------
參考資料:
1.
2.
3.
4.