graph TD
A[ View ]
B[ ViewModel ]
C[ Model ]
A -->| User Interaction | B
B -->| Notify Changes | A
B <-->| Data Binding | A
B -->| Calls | C
C -->| Data | B
publicclassBindableProperty<T> { publicdelegatevoidValueChangedHandler(T oldValue, T newValue);
publicevent ValueChangedHandler OnValueChanged;
private T _value; public T Value { get { return _value; } set { if (!object.Equals(_value, value)) { T oldValue = _value; _value = value; // 通知值發生改變 OnValueChanged?.Invoke(oldValue, _value); } } }
設置 Maximum Motor Speed(最大馬達速度)與Maximum Motor Force(最大馬達動力)控制角馬達速度,讓兩個剛體物體旋轉。 Maximum Motor Force(最大馬達動力):設置角馬達的最大扭矩。
即馬達所能施加的最大旋轉力。這個最大扭矩的設置對於控制車輪的轉動速度和力量非常重要。例如:
如果 Maximum Motor Force 設置得太小,馬達可能無法提供足夠的扭矩來驅動車輪,特別是在遇到障礙或需要加速的情況下。
如果 Maximum Motor Force 設置得太大,馬達可能會施加過大的扭矩,導致車輪快速旋轉,可能會影響車輛的穩定性 模擬懸掛 可以設置車輪懸掛的硬度和運動,以模擬不同程度的懸掛效果。例如,模擬硬且幾乎不動的懸掛:
設置高頻率(Frequency)(1,000,000是最高值)== 硬懸掛。
設置高阻尼比(Damping Ratio)(1是最高值)== 幾乎不動的懸掛。
若要模擬有彈性且自由運動的懸掛,可以使用以下設置:
設置低頻率 == 鬆弛的懸掛。
設置低阻尼比 == 可動的懸掛。
保持零相對線性距離(zero relative linear distance):在兩個剛體物體的錨點之間指定的線上保持零相對線性距離。 保持角速度(angular speed):在兩個剛體物體的錨點之間保持角速度(通過Maximum Motor Speed選項設置速度,通過Maximum Motor Force設置最大扭矩)。
graph TD
A[ User ] -->| Interacts with | B[ View ]
B -->| Sends user input to | C[ Controller ]
C -->| Updates | D[ Model ]
D -->| Notifies changes to | B[ View ]
B -->| Displays data from | D[ Model ]
graph TD
A[ User ] -->| Interacts with | B[ View ]
B -->| Sends user input to | C[ Presenter ]
C -->| Updates | D[ Model ]
D -->| Notifies changes to | C[ Presenter ]
C -->| Updates | B[ View ]
B -->| Displays data from | C[ Presenter ]
privatevoidUpdate() { if (Input.GetMouseButtonDown(0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, Mathf.Infinity, layerToClick)) { healthPresenter?.Damage(damageValue); } } } }
privatevoidOnDrawGizmosSelected() { Color transparentGreen = new Color(0.0f, 1.0f, 0.0f, 0.35f); Color transparentRed = new Color(1.0f, 0.0f, 0.0f, 0.35f);
classTest1<T> whereT:struct { public T value; publicvoidTestFun<K>(K v) where K: struct } // 這句會報錯,因為他不是結構類型 //-- Test1<object> t = new Test1<object>(); // 這句可以 Test1<int> t2 = new Test1<int>();
where T:class :引用類型約束
1 2 3 4 5 6 7 8 9 10 11
classTest2<T> whereT : class { public T value; publicvoidTestFun<K>(K k) where K : class {} }
// 這句可以 Test2<object> t = new Test2<object>();
// 這句會報錯,因為 int 不是引用類型 //-- Test2<int> t2 = new Test2<int>();
where T: new() :這個泛型一定要有一個無參數public的建構子(constructor),此外若是組合使用的話new()要放到最後
publicclassPooledObject : MonoBehaviour { private ObjectPool pool; public ObjectPool Pool { get => pool; set => pool = value; } publicvoidRelease() { pool.ReturnToPool(this); } }